有人解释我Html.DropDown,它是最亲密的朋友SelectList

时间:2008-12-03 09:34:20

标签: asp.net-mvc drop-down-menu selectlist

如果你查看我之前的问题,你可能已经注意到我没有得到SelectList和Html.DropDown()。我觉得这很吸引人,我似乎是唯一一个这样的人。所以也许我应该尝试改变我的心态,或者也许有些事我不知道会清除这一切。我真的很喜欢整个MVC框架,但SelectList并不想让我满意。所以这是我的清单:

的SelectList

  • 为什么我无法在实例化后设置所选值
  • 为什么我不能通过项目索引
  • 设置selectedValue
  • 为什么selectedvalue有时候是一个字符串,有时是我放入它的类,有时候是ListItem
  • 为什么这些项目只能通过GetItems()
  • 访问
  • 为什么selectedItem和listItems的类型不匹配?
  • 为什么放在列表中的项目转换为listItem而selectedItem不是?
  • 为什么我不能在没有GetItems()方法的情况下获得项目的计数

Html.DropDownList()

  • 为什么不使用模型绑定
  • 当只有一个选项
  • 时,为什么没有违约选择的行为
  • 为什么不在源selectLIst中创建一个SelectedValue项使其成为标记项

在ppl建议我写自己之前:
由于这将与MVC产品一起提供,我宁愿获得对基本控件的官方支持,然后自己动手并承担它带来的所有麻烦。

3 个答案:

答案 0 :(得分:3)

我感觉到你的痛苦。原谅无耻的插件,但你可能会看到MvcFluentHtml。您仍然可以使用SelectList和MultiSelectList,但您还有其他几个选择。用粘合剂可以正常工作。

答案 1 :(得分:2)

同样地,我有一些关于HTML Helpers的bugbears但是没有比SelectList更多的bugbears。要添加到投诉列表中,我想知道为什么SelectList不接受(或无法处理)通用IEnumerable<T>。同样,您可以将自己的实现集中在一起,但IEnumerable<T>将启用相当多的便捷功能(例如直接支持LINQ / Entity Framework),我觉得应该提供。

MvcFluentHtml(现在是MvcContrib的一部分)虽然看起来很不错。

答案 2 :(得分:2)

我理解你的大部分问题,奇怪的是,我还没有遇到任何问题!但是我可能正在使用MVC开发人员的意图,并且不需要在盒子外冒险太多!

但希望能帮助你一点,这里有一个例子,说明我如何使用SelectList和我设置的属性:

<%= Html.DropDownList("Module.Status", new SelectList(ViewData.Model.Statuses, "ID", "Name", ((int)ViewData.Model.Module.Status)), new {tabindex = 1, title = "Status"})%&gt;

并且在我的控制器操作中我使用了ModelBinder(你说这不起作用?不确定你遇到了什么问题,我的情况很好。)

public ActionResult Save(int? id, [Bind(Prefix = "Module", 
            Include = "Name,Description,Status")] Module module)

然后可以通过“module.Status”来访问状态。