Các tình huống có liên quan được rằng hành động hình thức được thiết lập để một URL có liên quan trong ASP.NET theo mặc định:
<form id="ctl01" action="./webform1" method="post">
<!-- ... -->
</form>
Nếu bạn sử dụng thẻ base
, bạn thay đổi đường dẫn cơ sở mà trang sử dụng để giải thích URL tương đối. Trong trường hợp của bạn, các URL base
trỏ đến một đường dẫn rõ ràng là không thể phân phát các trang của ứng dụng. Để khắc phục điều này, tôi sẽ xem xét lại liệu thẻ base
là cần thiết hay không. Nếu có, nó phải trỏ đến một URL có thể phục vụ các trang của ứng dụng. Để thiết lập đường dẫn base
đến con đường cơ sở của các ứng dụng tự động, bạn có thể sử dụng đoạn mã sau:
protected void Page_Load(object sender, EventArgs e)
{
baseCtrl.Attributes["href"] = new Uri(Request.Url, "/").OriginalString;
}
Là một công việc xung quanh nếu bạn cần phải giữ cho thẻ base
như nó có, tôi đã cũng đã cố gắng để thiết lập các hành động form
đến một URL tuyệt đối bằng cách tích hợp mã sau vào trang chủ:
protected void Page_Load(object sender, EventArgs e)
{
Page.Form.Action = Request.Url.OriginalString;
}
này làm việc trong mẫu nhỏ của tôi để các trang có thể thực hiện các postBack thành công. Mặc dù biểu mẫu được đăng trở lại vị trí giống như không có thẻ base
, có thể có một số tác dụng phụ vì các tài nguyên khác trên trang (ví dụ: CSS, tệp JavaScript và các loại tương tự) cũng có thể được tham chiếu với URL tương đối và do đó được lấy từ một vị trí khác. Vì vậy, tôi vẫn sẽ đề xuất đánh giá lại thẻ base
trước khi sử dụng giải pháp này.
bạn có đặt tự động khởi động thành true không? –
vâng, tôi đã làm và nếu tôi nhận xét rằng thẻ cơ sở trong masterpage mọi thứ hoạt động tốt –
http://stackoverflow.com/questions/11521011/why-base-tag-does-not-work-for-relative-paths ___ hãy kiểm tra nếu bài viết trên hoạt động. Có vẻ như nó có liên quan đến đường dẫn tuyệt đối và đường dẫn tương đối – user2846413