0

asp .net mvc を使用して、post と get を使用してフォームを送信します。私のコントローラーでは、ポスト引数にのみアクセスできますが、GET 引数にはアクセスできません。

ここに私のHTMLフォームがあります:

<form name="input" action="/account/Login/?test=123" method="post">
   Username: <input type="text" name="username">
   Lastname: <input type="text" name="lastname">
   Password: <input type="text" name="password">
<input type="submit" value="Submit">
</form>

私のコントローラー:

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Login(User model)
{
   string test = Request.QueryString["test"]; // this is null
}

コントローラーでもこれを試しましたが、役に立ちませんでした...

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public ActionResult Login(User model, string test)
    {
        // but "test" is also  null
    }
4

2 に答える 2

1

あなたの例は私にとって完璧に機能します。アクションの両方のバリエーションで、 test=123 を取得します

Html.BeginForm()または、ヘルパーを使用することもできます。

@using(Html.BeginForm("Account", "Login", new { test = "123" }, FormMethod.Post))
{
   @:Username: <input type="text" name="username"/>
   @:Lastname: <input type="text" name="lastname"/>
   @:Password: <input type="text" name="password"/>
   <input type="submit" value="Submit"/>
}
于 2013-07-10T20:43:17.080 に答える
0

それは HTTP 動詞の仕組みではありません。

GET と POST は、データを渡す 2 つの方法ではありません。これらは 2 つの異なるタイプの HTTP 要求です。(ペイロードを持つのは POST だけです)


クエリ文字列パラメーターを求めています。

ただし、ブラウザーはフォーム アクション URL からクエリ文字列パラメーターを取り除きます。
HTTP リクエストにはそれがまったく含まれていません。

代わりに、<input type="hidden">.

于 2013-07-10T20:24:12.837 に答える