我习惯在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内生成url到MVC控制器动作,我该如何去做这件事?
似乎在APIController上有一个UrlHelper属性,但我找不到任何如何使用它的例子,我自己也没能弄清楚。
更新:我试图生成一个url的原因是,这个特定的webapi方法发送一封电子邮件,该电子邮件为收件人提供了一个链接,以指导用户返回到网站的适当部分。我显然想摆脱硬编码,因为它不会为不同的部署工作,也如果我开始改变路由这个链接将被打破。有没有更好的方法来做这件事?
你可以使用MVC路由名称以及web API UrlHelper。例如,
Url.Link("Default", new { Controller = "Account", Action = "Login" });
或
Url.Route("Default", new { Controller = "Account", Action = "Login" });