11

私はasp.net mvc4で作業しており、「controller1」にこのアクションがあります:

    [HttpGet]
    public async Task<string> Action1()
    {
        try
        {
            HttpClient cl = new HttpClient();
            string uri = "controller2/action2";
            HttpResponseMessage response = await cl.GetAsync(uri);
            response.EnsureSuccessStatusCode();
            return response.ToString();
        }
        catch
        {
            return null;
        }
    }

uri を"http://localhost:1733/controller2/action2"アクションに設定すると正常に動作しますが、uri を「controller2/action2」または「/controller2/action2」または「~/controller2/action2」に設定することはありません。

uri をハードコーディングせずにこのアクションを記述するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

14

使用する:

string uri = Url.Action("Action2", "Controller2", new {}, Request.Url.Scheme);

アップデート:

APIコントローラーを使用していて、通常のコントローラーへのURLを生成する必要があるため、次を使用する必要があります。

string uri = this.Url.Link("Default", new { controller = "Controller2", action = "Action2" });

は、登録済みのルート コレクションで定義されている名前です。または、このアクション用に特定のルートを既に作成している場合Defaultは、その名前を2番目のパラメーターとして使用します。routenew{}

MVC バージョン 4 の場合は、登録済みのルートを で確認してください~/App_Start/RoutesConfig.cs。MVC バージョン 3 の場合は、 でRegisterRoutesメソッドを確認してくださいGlobal.asax

于 2013-07-19T08:12:14.633 に答える