0

在 Web API 中,我有一个 UserController 里面有一个动作如下:

[HttpGet]
public string SearchByEmail(string email)
{
    // how to get the sitename?
    return email;
}

我已经向 WebApiConfig 添加了一个路由,如下所示:

 config.Routes.MapHttpRoute(
               name: "SearchUserByEmail",
               routeTemplate: "{sitename}/User/SearchByEmail",
               defaults: new
               {
                   controller = "User",
                   action = "SearchByEmail"
               });

基本上,用户可以使用以下路径调用操作:

/mysitename1/user/searchbyemail?email=lala@lala.com

如何从操作中找出站点名称?

我编写了以下方法来从我的请求中检索它:

private string GetSiteName()
        {
            return this.Request.RequestUri.Segments[1].Replace("/", String.Empty);
        }

但是在 MVC 中没有更好的方法吗?

4

2 回答 2

1

在您的 UserController 中使用以下操作:

[HttpGet]
public string SearchByEmail([FromUri]string sitename, string email)
{
   //Do stuff with sitename
   return email;
}
于 2013-03-14T08:36:06.890 回答
0

您可以从当前请求中的路由数据中获取详细信息。

Request.GetRouteData().Values["sitename"].ToString()

于 2013-03-14T16:18:52.997 回答