ASP.NET MVC在javascript中解析url

17 asp.net-mvc jquery

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

Pra*_*yan 19

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

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

<script type="text/javascript">
    var baseUrl = "<%= Request.Url.GetLeftPart(UriPartial.Authority) %>";
</script>
Run Code Online (Sandbox Code Playgroud)

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

您的代码将变为:

jQuery.load(baseUrl + '/Business/Tags');
Run Code Online (Sandbox Code Playgroud)

  • 我认为最好使用:var baseUrl ="<%= Request.Url.GetLeftPart(UriPartial.Authority)+ Request.ApplicationPath.TrimEnd('/')%>"; (5认同)

eu-*_*-ne 5

至于我,我正在使用Url.Action/Url.RouteUrl助手和JavaScript/jQuery:

$.load('<%= Url.Action("Tags", "Business") %>')
Run Code Online (Sandbox Code Playgroud)

要么

$.load('<%= Url.RouteUrl("BusinessTagsRoute") %>')
Run Code Online (Sandbox Code Playgroud)

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

$.load('<%= Url.ResolveUrl("~/Business/Tags") %>')
Run Code Online (Sandbox Code Playgroud)

更新:

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

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

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