开发者

root url javascript

开发者 https://www.devze.com 2023-03-25 10:51 出处:网络
I\'m working on an .Net ASP MVC razor application The root url on the server being \"myWebSite.com/myApp/\"

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号