【问题标题】:How to write a Web API route mapping so that it allows me make a parameter optional?如何编写 Web API 路由映射以允许我将参数设为可选?
【发布时间】:2013-04-04 13:49:29
【问题描述】:

我有一个如下的 Web API 服务:

[HttpGet]
public UserProfile SearchByEmail(string siteName, string providerName, string email)
{}

我想将 providerName 设为可选,以下网址应该可以使用:

{0}: http://www.domain.com/sites/siteName1/providerName1/User/SearchByEmail?email=email1
{1}: http://www.domain.com/sites/siteName1/User/SearchByEmail?email=email1

我已经写了下面的映射:

 config.Routes.MapHttpRoute(
               name: "SearchUserByEmail",
               routeTemplate: "sites/{siteName}/{providerName}/User/SearchByEmail",
                defaults: new
                {
                    controller = "User",
                    action = "SearchByEmail",
                    providerName = UrlParameter.Optional
                });

但它只支持 {0} 网址,不支持 {1} 网址。

如何编写映射以便让我将 providerName 设为可选?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api asp.net-mvc-routing


    【解决方案1】:

    只有 url 片段的最后一个标记可以是可选的。如果您想让它起作用,您必须将您的路线模式更改为:sites/{siteName}/User/SearchByEmail/{providerName}。或者如果参数是可选的,我的建议是在查询字符串中传递它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2018-06-13
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多