MVC路由/ url,jQuery和Virtual Dirs

时间:2010-10-06 19:53:16

标签: jquery asp.net-mvc

我的第一个网络应用程序,这是我第一次部署。

所有人都在本地工作,但不是在偏远地区。

我使用了VS2010的Web部署选项。

首先:

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

该应用知道可以在以下位置找到Site.css:

domain.com/VDir/Content/Site.css

但它正在寻找jquery:

... domain.com/Scripts/jquery

奇怪的是它可以找到css而不是jquery。

好的,我在这里看到我可以使用:

<script src="<%: Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>

有了这个,我得到了jquery的工作。

但是... jquery管理Urls的所有例子都是:

$.ajax({
     url: "/Home/Index",
     ...

但有了这个,正在寻找:

domain.com/Home/Index

我记得当我阅读asp.net mvc书时,路由引擎足够聪明,无法忽略Virtual Dir。换句话说,网址的一部分是“domain.com/VDir”,另一部分是“/ Home / Index”

总之,我做错了什么?我如何告诉我的应用程序在VDIR下工作,所有网址都在网址上有VDir路径。

谢谢。

1 个答案:

答案 0 :(得分:1)

在您的site.master中使用此脚本

<script type="text/javascript">
    window.MVCURL = '<%= Url.Action("--Action--","--Controller--") %>';
</script>

现在在你的jquery中你可以使用

var myRoute = window.MVCURL.replace("--Action--", "yourActionName")
myRoute = myRoute.replace("--Controller--", "yourControllerName")