Gra*_*use 5 asp.net-mvc asp.net-mvc-routing asp.net-web-api asp.net-web-api-routing asp.net-web-api2
关于MVC和WebAPI中的路由的快速问题.我添加了路由config.cs的路由:
routes.MapRoute(
name: "ConfirmEmail",
url: "ConfirmEmail/{userid}",
defaults: new { controller = "Email", action = "ConfirmEmail" }
);
Run Code Online (Sandbox Code Playgroud)
这是按照正常情况在global.asax中注册的:
RouteConfig.RegisterRoutes(RouteTable.Routes);
Run Code Online (Sandbox Code Playgroud)
我正在尝试生成一个URL,以便在电子邮件中使用,该电子邮件是作为WebAPI控制器函数中的函数调用的一部分发送的.我正在使用UrlHelper.Link函数尝试生成一个URL,但是我收到一条错误,说明无法通过名称找到该路由:
var url = Url.Link("ConfirmEmail", new { userid = "someUserId" });
Run Code Online (Sandbox Code Playgroud)
现在我的印象是路由字典在MVC和WebAPI控制器上下文中共享但是我看不到传入Web API调用的路由字典中的MVC路由(在Request对象上),但是我已经定义了WebAPI路由.
我错过了什么吗?
Owr*_*wre 11
以下是从WebApi生成MVC路由链接的更简洁方法.我在自定义基本api控制器中使用此方法.
protected string MvcRoute(string routeName, object routeValues = null)
{
return new System.Web.Mvc.UrlHelper(System.Web.HttpContext.Current.Request.RequestContext)
.RouteUrl(routeName, routeValues, System.Web.HttpContext.Current.Request.Url.Scheme);
}
Run Code Online (Sandbox Code Playgroud)
MVC 和 Web API 的路由表完全不同。虽然语法看起来相似,但它们操作的路由表不同。
但是,MVC 使用静态对象进行配置,因此您可以使用System.Web.Routing.RouteTable.Routes.
但是,这不允许您使用 Url.Link,因此我建议在路由注册中使用常量作为格式。
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |