0

SelectListクラスを使用してドロップダウンリストを作成しようとしています。それが意味するのは次のことではありません

public class MyViewModel
{
    public int SelectedValue { get; set; }
    public IEnumerable<int> ValueList { get; set; }
}

それを機能させる方法については多くの例がありますが、私にはあります。SelectListビューモデルで上記のクラスを使用したいと考えています。

public class MyViewModel
{
    public SelectList ValueList { get; set; }
}

その利点は、結果をコントローラーに渡すときにModelState無効になることです。これを実行するだけでreturn View(model)、すべてがそのままになります。分割している場合は、アイテムのリストを再度取得する必要があります。選択した値を何らかの方法で設定してください。不便すぎる!

ビューモデルでSelectListを使用している人がいない理由はありますか?可能であれば、実際の例をいただければ幸いです:)

ありがとうございました。

4

1 に答える 1

0

私のプロジェクトでは、このようなシナリオが機能しています。私は MVC3 を使用していますが、これが当てはまると思います。

私のViewModelには、次のように定義されたプロパティがあります。

        private List<SelectListItemWithAttributes> pLeadDispositions = null;
    public List<SelectListItemWithAttributes> LeadDispositions {
        get {
            var LeadDispositionItems = (
                from c in db.GetLeadDispositionList(1, 1000)
                where c.AccountTypeID == this.AccountTypeID
                select new SelectListItemWithAttributes() { Text = c.Title, Value = c.ID.ToString(), HtmlAttributes = new Dictionary<string, string> { { "data-callback", c.RequiresCallback.ToString().ToLower() } } } ).ToList()
            ;

            LeadDispositionItems.Insert(0, new SelectListItemWithAttributes() { Text = "-- Select --", Value = "", HtmlAttributes = new Dictionary<string, string> { { "data-callback", "false" } } });

            return LeadDispositionItems;
        }
    }

SelectListItemWithAttributes は、私が使用している SelectListItem の単なるサブクラスであるため、それを SelectListItem に置き換えてパラメーター リストを変更するだけです。GetLeadDispositionList は、データベースから必要なデータを取得するストアド プロシージャです。

私の見解では、次のようになります。

@Html.DropDownListWithItemAttributesFor(m => m.LeadDispositionID, Model.LeadDispositions) 

DropDownListWithItemAttributesFor は、自分のプロジェクトで使用している DropDownListFor のサブクラスなので、DropDownListFor を代用するだけです

これがまさにあなたが探しているものではないことはわかっていますが、正しい方向に向けられるかもしれません。

これが役立つことを願っています。

于 2012-07-23T15:43:19.533 に答える