I'm working on an .Net ASP MVC razor application
The root url on the server being "myWebSite.com/myApp/"
I need to find dynamically this url to have the right url to make some Ajax call to action like this
$.ajax(
{
type: "POST",
url: root + "/Controller/Action",
data: ...
}
开发者_运维问答I read a few things here and there but what I found doesn't work
"document.location.hostname" -> "myWebSite.com"
"location.host" -> "myWebSite.com"
"window.location.pathname" -> "/myApp/"
Last one sounded promissing but if I navigate in the website :
for an url : "myWebSite.com/myApp/Controller/Action?1"
"window.location.pathname" -> "/myApp/Controller/Action"
In asp.net mvc, using razor view engine, I got this in my layout:
<script type="text/javascript">
var baseUrl = "@Url.Content("~")";
</script>
That way we can define application base url as javascript object that is accessible from everywhere.
You don't need to find this. Use realtive path:
$.ajax(
{
type: "POST",
url: "Controller/Action",
data: ...
}
This will go in as <root>/Controller/Action
What about this?
var root = "<%=Request.ApplicationPath%>";
alert(root);
Does it give correct root URL?
I use this:
In razor:
Uri auxBaseUri = new Uri(Request.Url.GetLeftPart(UriPartial.Authority));
Uri baseUri = new Uri(auxBaseUri, Url.Content("~"));
Then in the js I use:
var baseUrl = "@baseUri.ToString()";
$.ajax
({
type: "POST",
url: baseUrl + "Controller/Action",
...
It works on my machine and on the server. Hope it helps
精彩评论