ASP.NET MVC3 / Razor: How to Get Just the Uri for an Action Method
I normally wouldn’t post something this small to my blog, but this issue bothered me so much when I was working on some Twitter @Anywhere + jQuery integration in ASP.NET MVC3 that I couldn’t help but share it.
Issue: You’re using ASP.NET MVC3 and want to be able to place a relative Uri for one of your ASP.NET MVC controller’s action methods in a block of JavaScript or anywhere else, and you want to be able to do it without having to parse it out of an Html.ActionLink output or anything else. What built-in helper method do you use?
Solution: The answer is that you use the Url.Action method, which yields a relative Uri, as you’d expect.
Observe the code below:
T("#login").connectButton({
authComplete: function (user) {
// triggered when auth completed successfully
$.post('@Url.Action("AnywhereTest", "Auth")');
location.reload();
}
});
And here’s the output to go along with it:
T("#login").connectButton({
authComplete: function (user) {
// triggered when auth completed successfully
$.post('/auth/anywheretest');
location.reload();
}
});