从Web API生成Route Url到MVC控制器操作

时间:2013-03-06 14:39:13

标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing urlhelper

我习惯使用类似下面的内容为MVC控制器操作中的其他控制器操作生成路由URL:

public class ApplicationController : Controller
{
    public ActionResult Index( )
    {
        var url = Url.RouteUrl("routename",
           new { controller = "Application", Action = "Index2" , other="other" });
    }

    public ActionResult Index2( string other)
    {
    }
}

但我也需要能够从webapi中生成MVC控制器动作的URL,我将如何进行此操作?

APIController上似乎有一个UrlHelper属性,但是我找不到任何如何使用它的例子,而且我自己也无法弄明白。

更新: 我尝试生成URL的原因是这个特定的webapi方法发送一封电子邮件,该邮件向收件人提供一个链接,将用户引导回站点的相应部分。我显然希望摆脱硬编码,因为它不适用于不同的部署,如果我开始更改路由,这个链接将被破坏。有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:28)

您可以使用MVC路由名称以及Web API UrlHelper。例如,

 Url.Link("Default", new { Controller = "Account", Action = "Login" });

 Url.Route("Default", new { Controller = "Account", Action = "Login" });