ページに複数のフォームがあり、それぞれに同じ名前を使用しているが、異なるタイプ (radio/hidden/etc) として使用している場合、ASP.NET MVC に問題があるようです。最初のフォームの投稿(たとえば、「日付」ラジオボタンを選択します)、フォームが再レンダリングされる場合(結果ページの一部として)、他のフォームの SearchType の非表示の値という問題があるようです最後のラジオ ボタンの値 (この場合は SearchType.Name) に変更されます。
以下は、削減目的のフォームの例です。
<% Html.BeginForm("Search", "Search", FormMethod.Post); %>
<%= Html.RadioButton("SearchType", SearchType.Date, true) %>
<%= Html.RadioButton("SearchType", SearchType.Name) %>
<input type="submit" name="submitForm" value="Submit" />
<% Html.EndForm(); %>
<% Html.BeginForm("Search", "Search", FormMethod.Post); %>
<%= Html.Hidden("SearchType", SearchType.Colour) %>
<input type="submit" name="submitForm" value="Submit" />
<% Html.EndForm(); %>
<% Html.BeginForm("Search", "Search", FormMethod.Post); %>
<%= Html.Hidden("SearchType", SearchType.Reference) %>
<input type="submit" name="submitForm" value="Submit" />
<% Html.EndForm(); %>
結果ページのソース (これは結果ページの一部になります)
<form action="/Search/Search" method="post">
<input type="radio" name="SearchType" value="Date" />
<input type="radio" name="SearchType" value="Name" />
<input type="submit" name="submitForm" value="Submit" />
</form>
<form action="/Search/Search" method="post">
<input type="hidden" name="SearchType" value="Name" /> <!-- Should be Colour -->
<input type="submit" name="submitForm" value="Submit" />
</form>
<form action="/Search/Search" method="post">
<input type="hidden" name="SearchType" value="Name" /> <!-- Should be Reference -->
<input type="submit" name="submitForm" value="Submit" />
</form>
RC1を持っている他の誰かがこれを確認できますか?
多分それは私が列挙型を使用しているためです。知らない。隠しフィールドに 'manual' input () タグを使用することでこの問題を回避できることを付け加えておきますが、MVC タグ (<%= Html.Hidden(...) %>) を使用すると、.NET MVC がそれらを置き換えます。毎回。
どうもありがとう。
アップデート:
今日もこのバグを見ました。投稿されたページを返し、MVC set hidden form tags を Html ヘルパーで使用すると、これが頭を切り取るようです。私はこれについてPhil Haackに連絡しました。なぜなら、他に頼るべき場所がわからないからです。また、これが David によって指定された予期される動作であるとは思えません。