ASP.NET MVC在javascript中解析url

时间:2009-05-28 20:30:51

标签: jquery asp.net-mvc

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

4 个答案:

答案 0 :(得分:18)

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

以下是我在案例中解决的问题。我在顶部的母版页中的头标记中包含了以下JavaScript:

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

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

您的代码将成为:

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

答案 1 :(得分:5)

至于我,我正在使用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

答案 2 :(得分:2)

我们在应用中采用以下几种方式:

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

OR

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

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

答案 3 :(得分:1)

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

<html>
    <head>
        <base href="http://www.mysite.com/virtual_dir1/">
        <script src="location_of_js_file">

记住基础href中的结尾'/'。

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