我正在开发一个。net asp.net MVC razor应用程序
服务器上的根url为"myWebSite.com/myApp/"
我需要动态地找到这个url,以便有正确的url来进行一些Ajax调用,如
$.ajax(
{
type: "POST",
url: root + "/Controller/Action",
data: ...
}
我在这里和那里读了一些东西,但我发现不工作
"document.location.hostname" -> "myWebSite.com"
"location.host" -> "myWebSite.com"
"window.location.pathname" -> "/myApp/"
最后一个听起来很有希望,但如果我在网站上浏览:
for an url : "myWebSite.com/myApp/Controller/Action?1"
"window.location.pathname" -> "/myApp/Controller/Action"
在asp.net mvc中,使用razor视图引擎,我在我的布局中得到了这个:
<script type="text/javascript">
var baseUrl = "@Url.Content("~")";
</script>
你不需要找到这个。使用相对路径:
$.ajax(
{
type: "POST",
url: "Controller/Action",
data: ...
}
输入<root>/Controller/Action
这个怎么样?
var root = "<%=Request.ApplicationPath%>";
alert(root);
它是否给出正确的根URL?
我用这个:
在剃刀:Uri auxBaseUri = new Uri(Request.Url.GetLeftPart(UriPartial.Authority));
Uri baseUri = new Uri(auxBaseUri, Url.Content("~"));
然后在js中使用:
var baseUrl = "@baseUri.ToString()";
$.ajax
({
type: "POST",
url: baseUrl + "Controller/Action",
...
它可以在我的机器和服务器上工作。希望能有所帮助