我习惯使用类似下面的内容为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方法发送一封电子邮件,该邮件向收件人提供一个链接,将用户引导回站点的相应部分。我显然希望摆脱硬编码,因为它不适用于不同的部署,如果我开始更改路由,这个链接将被破坏。有没有更好的方法来做到这一点?
答案 0 :(得分:28)
您可以使用MVC路由名称以及Web API UrlHelper。例如,
Url.Link("Default", new { Controller = "Account", Action = "Login" });
或
Url.Route("Default", new { Controller = "Account", Action = "Login" });