将具有有意义名称的MVC路由映射到Web API的每个方法

本文关键字:Web API 方法 映射 MVC 有意义 路由 | 更新日期: 2023-09-27 18:25:19

MVC Web API的标准路由是{controller}/{id}。然而,我想更具描述性地命名我的变量,而不仅仅是"id"。尽管如此,如果我可以像WCF Web API那样将路由直接映射到方法,那么这样做对我来说更有意义。有没有一种方法可以用MVC实现这一点,或者有没有一个更MVCish的路由方式,但仍然为每个方法维护唯一的可识别占位符?。还是我只是把所有参数都命名为id?

    [WebGet(UriTempalte="{controller}/{email}"]
    public string GetEmail(string email)

代替:

    public string GetEmail(string id)

将具有有意义名称的MVC路由映射到Web API的每个方法

如果将其命名为email,则在Global.asax.cs中创建一个单独的Route,并相应地命名参数,即{controller}'{email}。在MVC路由中,你只有一个非常短的MVC特定关键字列表-{controller}、{action}、{area}等。所有其他参数都会传递给相应的动作参数(当然,如果它们存在于你的动作方法签名中)。

routes.MapRoute("getemail/{email}", new { controller = "EmailGetter", action = "GetEmail" })还不够吗?