2011-09-08 49 views
0

フォーム(名前、住所)などのViewModelを持っていて、それは(Sparkエンジンを使用して)ページのコントロールにすべてバインドされています。asp.netで動的選択リストをバインドするMVC

!{ Html.DropDownList() } 

これは問題なく動作します。しかし、Ajaxを使用して値が入力されます(先のドロップダウンを選択して)。

問題が発生したのは、ページを送信したときに検証エラーが発生したことです。ページが読み込まれ、選択リストには値がありません(取得するためにトリガーされていないため)。

ViewModelで値が動的に取得され、ページの読み込み時に選択リストに値を設定できるように、どうすれば設定できますか?

+0

検証エラーのスクリーンショットを投稿できますか? – link664

答えて

0

あなたがする必要がありますどちらか:あなたは内の値を渡すことができますHtml.DropDownList()呼び出しを使用して、このサーバ側の操作を行い

Html.DropDownList(string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes) 

またはその他の方法は、になりますページが読み込まれたときに同じAjax呼び出しをトリガーするだけで、ロジックが重複しないようにすることができます。

、それは同じこと複数の方法をやってからあなたを保つだろうと私は実際には、第二の方法をお勧めしますが、それは「

0

あなたののviewmodelにSelectListのタイプのプロパティが追加できることを意味していそれをコンストラクタで作成し、ビューページのHtml.DropDownList関数を使用して呼び出します。この選択リストは別のリスト(つまり、あなたのビューモデルの別のプロパティ)に依存しているためです。あなたのコンストラクタで、あなたは、のようなコードを書くことができます最初のリストボックスは、int型のプロパティをリスト1に接続されている場合

が言うと値は、あなたがまだ明らかでない場合は、ここで心配なコードを書く> 0

<code> 
if (list1!=0) 
{ 
    write code to populate second list based on your first list parameter and also set 
    the selected value as if selected by the user at submit its stored in the other 
    property linked to the second list box. 
} 
</code> 

です許可しましたあなたのビューモデルとサーバー側のデータベース呼び出しを2番目のリストから削除すると、あなたのコードを編集することができます。

関連する問題