ASP.NET MVC在javascript中解析URL

我正在通过jQuery.load(’/ Business / Tags’)加载一些内容,这在使用我的本地网络服务器时效果很好。 但是当使用iis时,这无法正确解决。 我已经看到了几种不同的解决方法,比如ResolveUrl。 在javascript中处理解析url的最佳方法是什么?

我用我的JavaScript遇到了这个问题。 由于我的JavaScript也在我的母版页中包含的单独文件中,因此我无法在我的案例中使用ResolveUrl。

这是我在我的案例中解决它的方式。 我在顶部的母版页中的头标记中包含以下JavaScript:

 

我正在设置一个全局变量,可以访问所有名为baseUrl的JavaScript文件。

您的代码将变为:

 jQuery.load(baseUrl + '/Business/Tags'); 

至于我,我正在使用Url.Action / Url.RouteUrl帮助程序使用JavaScript / jQuery:

 $.load('<%= Url.Action("Tags", "Business") %>') 

要么

 $.load('<%= Url.RouteUrl("BusinessTagsRoute") %>') 

在其他情况下,我正在使用ResolveUrl帮助程序(来自MVCContrib或您可以编写自己的):

 $.load('<%= Url.ResolveUrl("~/Business/Tags") %>') 

更新:

也可以使用动作为JavaScript / jQuery创建特殊控制器,使用JavaScript返回PartialViews:

 public ActionResult YourJavaScript() { Response.ContentType = "application/x-javascript"; return PartialView("YourJavaScript"); } 

然后在YourJavaScript.ascx中,您可以将JavaScript / jQuery代码与WebForms服务器标记一起使用。 我仍然建议不要在jQuery / AJAX中使用难以编码的Urls

我们在应用程序中执行此操作的几种方法:

  var applicationPath = '<%= Url.Content("~/") %>'; 

要么

  var applicationPath = '<%= Request.Url.Scheme %>://<%= Request.Url.Host %><%= Request.ApplicationPath %>/'; 

然后我们使用applicationPath作为所有ajax调用的基本URL。

我仍然建议在主页面中使用base href标签。 因此,任何图像或JavaScript调用都将从此url解析。 这将允许您将javascript函数/调用放在外部js文件中。

 
     
         
         

记住基础href中的结尾“/”。

此外,删除前导'/'并且无论何时执行jQuery.load('Business / Tags'),它实际上都来自http://www.mysite.com/virtual_dir1/Business/Tags 。