1

HomeControllerで、Request.QueryStringを使用して情報を取得しようとしています

        string aa = Request.QueryString["aa"];
        string bb = Request.QueryString["bb"];

したがって、アドレスバーでは次のようなものを期待しています。

<何か>?aa = 12345&bb = 67890

新しいルートを作成しました:

        routes.MapRoute(
            "Receive",
            "Receive",
            new { controller = "Home", action = "Index" }
        );

そして私はそれをこのように使おうとしています:
http:// localhost:54321 / Receive?aa = 12345&bb = 67890

しかし、次のエラーが発生します。

リソースが見つかりません。

説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。

要求されたURL:/ Receive

4

4 に答える 4

2

404 を取得している理由は、ルーティングがおかしいと思います。具体的には、いくつかのチュートリアルをご覧ください: asp.net/mvc/tutorials/asp-net-mvc-routing-overview-cs

また、@ YuriyFaktorovich が言うように、実際には Request.QueryString を使用するべきではなく、それらをパラメータとしてアクション メソッドに渡す必要があります。

VB での例:

Function Retrieve(ByVal aa as String, ByVal bb as String) as ActionResult
于 2011-11-07T15:42:06.537 に答える
2

クエリ文字列の値には 2 つの方法でアクセスできます...

  • コントローラーの初期化で値を取得します
  • アクションで値を使用する
  • これらの変数でルートを指定する

1 - コントローラーの初期化で値を取得します

protected override void Initialize(RequestContext requestContext) {
    // you can access and assign here what you need and it will be fired
    //  for every time he controller is initialized / call

    string aa = requestContext.HttpContext.Request.QueryString["aa"],
           bb = requestContext.HttpContext.Request.QueryString["bb"];

    base.Initialize(requestContext);
}

2 - アクションで値を使用する

public void ActionResult Index(string aa, string bb) {
    // use the variables aa and bb, 
    //  they are the routing values for the keys aa and bb
}

3 - これらの変数でルートを指定する

routes.MapRoute(
    "Receive",
    "Receive/{aa}/{bb}",
    new { 
        controller = "Home", 
        action = "Index", 
        aa = UrlParameter.Optional, 
        bb = UrlParameter.Optional }
);
于 2011-11-07T06:48:20.583 に答える
0

HTTP 404エラーは、新しいルートが間違った場所にある可能性が非常に高いためです。新しいルートがデフォルトルートの前にあることを確認してください。

routes.MapRoute(
        "Receive",
        "Receive",
        new { controller = "Home", action = "Index" }
    ); 

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
于 2011-11-07T13:46:56.470 に答える
0

ルートの URL に使用"Receive/"し、使用しないでくださいRequest.Querystring

アクションを次のように変更できます。

public ActionResult Index(string aa, string bb) {...}

ASP.Net MVC フレームワークは、これらの項目をハイドレートします。

于 2011-11-07T06:44:59.820 に答える