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 回答