p.campbell
p.campbell

Reputation: 100657

jQuery ASP.NET MVC - $.post() to a different URL path in different environments

Consider the need to $.post() to a slightly different URL structure in the Visual Studio Dev environment vs. deployed IIS Production or Test environment.

When deployed to the Test server, the app is running under a Virtual Directory in IIS. The URL will be something like:

Deployed

URL: http://myServer/myApplication/Area/Controller/Action

Using jQuery's .post(), I need to supply the string:

 $.post( "/myApplication/myArea/myController/myMethod"

Development

When in the Visual Studio environment

Cassini URL is: http://localhost:123/Area/Controller/Action

Using jQuery's .post(), I need to supply the string:

 $.post( "/myArea/myController/myMethod"

Question: How can I make both these use the same line of code, regardless of their deployed environment?

Upvotes: 3

Views: 766

Answers (2)

dano
dano

Reputation: 5630

Another (simpler?) implementation would be to setup a js variable of your application root:

<script type="text/javascript" >
    var globalAppPath = '<%= Request.ApplicationPath %>';
</script>

Then you can just append it to the beginning of any url request.

$.post( globalAppPath + "/myArea/myController/myMethod"

It'll work no matter where you put your web app.

Upvotes: 1

mkchandler
mkchandler

Reputation: 4758

The way I've done this is by generating the url from the RouteUrl method like so:

var url = "<%= Url.RouteUrl(new { area="myArea", controller = "controller", action = "actionmethod" }) %>";
$.post(url ...

As long as your routes are set up correctly, this will generate the appropriate Url.

Edit: Now works with areas without modification.

Upvotes: 3

Related Questions