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

0

現在のリクエストに存在するルートデータから詳細を取得できます。

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

于 2013-03-14T16:18:52.997 に答える