2009-05-26 8 views
2

私はこの作用を有する:、どのようにドロップダウンリストの状態を覚えていますか?

public ActionResult Add([Bind(Include = "Title,Description")] product product2Add){ 
--SNIP-- 
} 

私は、製品のクラスと私は私の見解で必要な何かを含む特別なAddProduct_ViewModelクラスを作成したビューモデルパターンを使用しています。それには2つのドロップダウンリストが含まれています。さまざまな製品カテゴリすべてのDB参照を行うものと、製品サプライヤを列挙するものとがある。

私の製品で検証を行うと、(長いDBコードを使わずに)ドロップダウンリストの状態を簡単に保存する方法がわかりません。より良い方法がありますか?

+1

は、部分的な要求を行います。この方法では、状態を覚えておく必要がなくなり、変更されないためです。 :) –

答えて

-2

MVCでは、コントロールは状態を保存できませんが、javascriptを使用してクッキーに保存することができます(jqueryが望ましい)、またはonChangeのサーバー側にこの情報を保存することができますイベント。

Request.Form.Get("MyDropDownListId"); 

を選択されたオプションのvalue属性を取得するには:あなたが呼び出すことができるコントローラで

1

ポストバック後に再度ドロップダウンリストを作成する際に、この値を使用して選択した項目を再設定することができます。拡張メソッドToSelectList(有

Response.Write(Html.DropDownList("pageSize", 
      Model.PageSizes.ToSelectList(p => p.ToString(), p => p.ToString(), p => p.Equals(Model.PageSize)))); 

を):あなたがあなたのモデル内のプロパティ "がPageSize" を持っているとき、ビューで選択した項目を設定する

public static List<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, string> text, Func<T, string> value, Func<T, bool> selected) 
{ 
    var items = enumerable.Select(f => new SelectListItem() { Text = text(f), Value = value(f) }).ToList(); 
    return items; 
} 
+0

ショートコントローラーアクションでは、パラメーターを介してddlデータを受け入れ、戻す必要があります。右? –

+0

はいパラメータ「文字列MyDropDownListId」を使用するか、パラメータで気にしたくない場合はRequest.Form NameValueCollectionを使用できます –

+0

そして、実際には、ポストバック後に選択した値をビューに戻す必要があります。 これはAJAXを使用して回避できます。 –

関連する問題