私は MVC を初めて使用しますが、すべてのドキュメント、すべての質問、見つけることができるすべてのブログ投稿を読んでいます。
「作成」アクションとビューを作成しようとしています。私のデータ入力は比較的単純で一般的です。ドロップダウン リストとテキスト ボックスがあります。私の場合は、ユーザーの連絡先チャネルを作成しています。ドロップダウン ボックスで電子メールとテキスト メッセージのどちらかを選択し、テキスト ボックスに適切な形式の電子メール アドレスまたは携帯電話番号のいずれかの関連する連絡先情報を入力します。
これが私のビューページの(少し簡略化された形式の)です:
<tr>
<td><%= Html.DropDownList("ChannelDescription", Model.ChannelDescription, "Select a Channel", new { id = "ChannelDDL", onchange="ChannelDDLChanged()" })%>
<br />
<%= Html.ValidationMessage("ChannelDescription", "Please Select a Channel") %>
</td>
<td>
<%= Html.TextBox("SubscriberNotificationAddr") %> <br />
<%= Html.ValidationMessage("SubscriberNotificationAddr", "Please enter a contact address or number") %>
</td>
</tr>
ViewDataDictionary を使用するのではなく、厳密に型指定された ViewData モデルを使用しています。ChannelDescription 要素は SelectList であり、選択肢のリストで初期化され、選択はありません。
フォームの初期表示、フォームへのデータ入力、およびコントローラーによるフォームからのデータの抽出はうまくいきます。
私の問題は、データに不正な形式の電子メール アドレスや携帯電話番号などのエラーが含まれていて、ビューに戻る必要がある場合、ドロップダウン リストの選択を再表示することに成功していないことです。ChannelDescription 要素は、ユーザーの選択を選択項目としてコントローラーで再作成されます。ビューのその行にブレークポイントを設定し、項目リストの選択された要素の Selected プロパティが true に設定されていることを確認しましたが、デフォルトの「チャネルの選択」が表示されたままです。
これは非常に一般的な状況のようで、それほど難しいことではありません。私は何を間違っていますか?
参考までに、これは MVC 1.0 (リリース)、Windows 7、および VS 2008 で、Firefox 3.5.2 で実行されています。