Tôi đang tải lên một số nội dung thông qua jQuery.load ('/ Business/Tags'), hoạt động tốt khi sử dụng máy chủ web cục bộ của tôi. Nhưng khi sử dụng iis, điều này không giải quyết chính xác. Tôi đã thấy một vài cách khác nhau để giải quyết vấn đề này như ResolveUrl. Cách tốt nhất để xử lý các url giải quyết trong javascript của bạn là gì?ASP.NET MVC giải quyết các url trong javascript
Trả lời
Tôi đã gặp sự cố chính xác này với JavaScript của mình. Vì JavaScript của tôi cũng nằm trong một tệp riêng biệt được bao gồm trong Trang cái của tôi, tôi không thể sử dụng ResolveUrl trong trường hợp của mình.
Đây là cách tôi giải quyết trong trường hợp của tôi. Tôi đã bao gồm mã JavaScript sau trong thẻ đầu của tôi trong Trang cái của tôi ở trên cùng:
<script type="text/javascript">
var baseUrl = "<%= Request.Url.GetLeftPart(UriPartial.Authority) %>";
</script>
Tôi đang đặt một biến toàn cầu có thể truy cập được vào tất cả các tệp JavaScript của tôi được gọi là baseUrl.
Mã của bạn sau đó sẽ trở thành:
jQuery.load(baseUrl + '/Business/Tags');
Đối với tôi, tôi đang sử dụng những người giúp đỡ Url.Action/Url.RouteUrl với JavaScript/jQuery nơi người ta có thể:
$.load('<%= Url.Action("Tags", "Business") %>')
hoặc
$.load('<%= Url.RouteUrl("BusinessTagsRoute") %>')
Trong các trường hợp khác tôi đang sử dụng trình trợ giúp ResolveUrl (từ MVCContrib hoặc bạn có thể tự viết):
$.load('<%= Url.ResolveUrl("~/Business/Tags") %>')
CẬP NHẬT:
Nó cũng có thể để tạo ra bộ điều khiển đặc biệt cho JavaScript của bạn/jQuery với hành động, trở về PartialViews với JavaScript:
public ActionResult YourJavaScript()
{
Response.ContentType = "application/x-javascript";
return PartialView("YourJavaScript");
}
Sau đó, trong bạn YourJavaScript.ascx bạn có thể sử dụng mã JavaScript/jQuery với các thẻ máy chủ WebForms. Tôi vẫn khuyên bạn không nên sử dụng các url được mã hóa hầu hết trong jQuery/AJAX
Nếu bạn đặt tất cả JavaScript của mình vào một tệp riêng và sau đó tham chiếu tệp này bằng cách sử dụng Url.Content trong trang Chính của bạn, Url.ResolveUrl sẽ không hoạt động trong JavaScript của bạn. Ai đó hãy sửa tôi nếu tôi sai về điều này. –
Tôi vẫn khuyên bạn nên sử dụng thẻ cơ sở href trong trang Chính của bạn. do đó mọi hình ảnh hoặc cuộc gọi javascript sẽ giải quyết từ url này. Điều này sẽ cho phép bạn đặt các hàm/cuộc gọi javascript của bạn vào một tệp js bên ngoài.
<html> <head> <base href="http://www.mysite.com/virtual_dir1/"> <script src="location_of_js_file">
Nhớ kết thúc '/' trong href cơ sở.
Ngoài ra, hãy xóa '/' hàng đầu và bất cứ khi nào bạn làm jQuery.load ('Doanh nghiệp/Thẻ'), nó sẽ thực sự xuất phát từ http://www.mysite.com/virtual_dir1/Business/Tags.
Tôi thực sự thực sự thích cách tiếp cận này. Vì vậy, sạch sẽ và đòi hỏi rất ít nỗ lực. Cảm ơn – lomaxx
Điều này chắc chắn là một cách tiếp cận thực dụng cho vấn đề này, nhưng sử dụng ['base'] (http://www.w3.org/TR/REC-html40/struct/links.html#h-12.4) theo cách này là sai. Chỉ nên sử dụng HREF cơ sở để giải quyết URI tương đối với trang hiện tại bạn đang truy cập. Bằng cách đặt 'base' theo cách này ** tất cả ** URI tương đối trên trang này sẽ trỏ tới' http: // www.mysite.com/virtual_dir1/'. – ahsteele
Một vài cách chúng ta làm điều này trong các ứng dụng của chúng tôi:
var applicationPath = '<%= Url.Content("~/") %>';
HOẶC
var applicationPath = '<%= Request.Url.Scheme %>://<%= Request.Url.Host %><%= Request.ApplicationPath %>/';
Sau đó chúng tôi sử dụng applicationPath như địa chỉ cơ sở cho tất cả các cuộc gọi ajax của chúng tôi.
- 1. ModelFactory trong ASP.NET MVC để giải quyết vấn đề 'RenderPartial'
- 2. Tạo một URL hành động trong JavaScript cho ASP.NET MVC
- 3. ASP.NET MVC Colon trong URL
- 4. Cách gọi URL bên ngoài từ giải pháp ASP.NET MVC
- 5. URL SEO với ASP.NET MVC
- 6. Nhận Html từ Url trong ASP.NET MVC
- 7. ASP.NET MVC URL tự động có độ phân giải trong file CSS
- 8. Url helper cho url đầy đủ trong asp.net MVC-3
- 9. Đường dẫn ảo ASP.NET ở đâu giải quyết dấu ngã "~"?
- 10. ASP.NET MVC sai url trong cuộc gọi ajax
- 11. Tổ chức giải pháp ASP.NET MVC
- 12. HttpContext.Current không giải quyết trong MVC 4 Dự án
- 13. ASP.NET MVC: Nhận URL đến RouteTable Routes
- 14. ASP.NET MVC: ActionLink vs bare url
- 15. Liệt kê các URL tuyến đường Route MVC ASP.NET
- 16. ASP.NET MVC Routing/SEO Friendly URL
- 17. ASP.Net MVC - xử lý các thông số URL xấu
- 18. Giải pháp xếp hàng cho ASP.NET MVC
- 19. asp.net MVC dataannotation xác nhận url
- 20. Return to url hiện tại trong asp.net MVC
- 21. Asp.net MVC Razor - Tùy chỉnh javascript bên trong nếu chặn
- 22. Vấn đề Django trong việc giải quyết các ký tự đặc biệt trong url
- 23. Tạo tệp javascript khi đang bay trong asp.net mvc
- 24. Có sự khác biệt nào giữa Url.Content ("~/...") và "~ /" cho các url trong ASP.NET MVC không?
- 25. Giải quyết các thông số trong C#
- 26. Nhận URL đầy đủ của hành động trong ASP.NET MVC
- 27. Ai đó có thể giải thích ASP.NET MVC cho tôi?
- 28. Bao gồm giá trị băm trong đường URL ASP.NET MVC
- 29. URL trường hợp thấp hơn trong ASP.NET MVC
- 30. Nhiều chế độ xem giải quyết vào mùa xuân mvc
Tôi đã thử phương pháp này nhưng tôi không nhận được khá những gì tôi cần nhưng tôi nghĩ rằng tôi có thể làm việc với nó.Tôi nhận được một chuỗi như thế này "http: // mtsengv003 /" nhưng tôi cần một cái như thế này "http: // mtsengv003/MVC /" Cảm ơn –
Tôi nghĩ rằng nó tốt hơn để sử dụng: var baseUrl = "<% = Yêu cầu .Url.GetLeftPart (UriPartial.Authority) + Request.ApplicationPath.TrimEnd ('/')%> "; –
@ eu-ge-ne: Cảm ơn bạn đã chỉ ra điều đó. Ký ức của tôi không phải là những gì nó từng là. Mã của bạn là hoàn hảo. –