7

Html.BeginForm()メソッドが、提供されたrouteValuesをFORM タグのアクション属性にエンコードすることに気付きました。これは POST メソッドでうまく機能します。ただし、メソッドが GET の場合、アクション URL のすべてのパラメーターはブラウザーによって取り除かれます (IE8 および Firefox 3.0.7 でテスト済み)。

たとえば、このコードが表示されます

<%
    using (Html.BeginForm("TestAction", "TestController", new { test = 123 }, 
        FormMethod.Get)) 
    {
        Response.Write("<input type='submit'>");
    };
%>

そのようなHTMLを与える

<form action="/TestController/TestAction?test=123" method="get">
    <input type='submit'>
</form>

しかし、フォームを送信した後、URL は/TestController/TestAction ではなく/TestController/TestAction?test=123になりました (パラメーターが失われます)。

現在、 routeValuesパラメータの代わりにHtml.Hidden()呼び出しのグループを使用していますが、別の回避策があることに興味がありますか? いつか修正されるMVCのバグと考えるべきですか?

4

1 に答える 1