2

フォームを含む MVC3 ビューがあり、クエリ文字列を介してパラメーターを渡したいと考えています。これが私のフォームです

@using (Html.BeginForm("LogOn", "Account", new { db = @Request.QueryString["db"] }, FormMethod.Post))

コントローラーはこちら

[HttpPost]
public ActionResult LogOn(LogOnModel model,string db)

ログイン ボタンをクリックしてコードをステップ実行すると、param db が null になります。私はそれを次のように渡します:

  http://localhost:64632/?db=someValue

私のルートは次のようになります。

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{db}", // URL with parameters
        new { controller = "Account", action = "LogOn", db = UrlParameter.Optional           } // Parameter defaults
);

私は何を間違っていますか?

4

4 に答える 4

1

あなたのルートはdb、URL のトークンであることが期待されています:

http://localhost:64632/Account/LogOn/someValue

コントローラーのクエリ文字列から値を取得し、db パラメーターを a に格納するViewBagと、フォームで使用できるようになります。

于 2012-05-23T20:46:48.080 に答える
1

それが唯一のルートである場合、おそらく現在表示されているページは「/controller/action/dbValue」のようになります。この場合、

@Request.QueryString["db"]

db はルート値であり、クエリ文字列の一部ではないため、何も取得しません。あなたが使用することができます

@ViewContext.RouteData.Values["db"]

代わりは。

于 2012-05-23T21:28:05.023 に答える
1

できます。私も同じことをしています。http 投稿でクエリ文字列の値を取得できます。Request["queryparametername"]

于 2012-05-23T22:23:02.420 に答える
0

さて、これは get メソッドのリンクです: "http://localhost:64632/?db=someValue"

HttpPost 属性を使用しました。

于 2012-05-23T20:51:00.680 に答える