5

如果您查看我之前的问题,您可能已经注意到我没有得到 SelectList 和 Html.DropDown()。我觉得有趣的是,我似乎是其中唯一的一个。所以也许我应该尝试改变我的心态,或者也许有一些我不知道的事情会解决这一切。我真的很喜欢整个 MVC 框架,但 SelectList 只是不想适应我的想法。所以这是我的清单:

选择列表

  • 为什么实例化后无法设置选定的值
  • 为什么我不能按项目索引设置 selectedValue
  • 为什么 selectedvalue 有时是字符串,有时是我放入其中的类,有时是 ListItem
  • 为什么这些项目只能通过 GetItems() 访问
  • 为什么 selectedItem 和 listItems 的类型不匹配?
  • 为什么您放入列表中的项目转换为 listItem 而 selectedItem 没有?
  • 为什么没有使用 GetItems() 方法我不能得到项目的数量

Html.DropDownList()

  • 为什么模型绑定不能使用它
  • 当只有一个选项时,为什么没有默认选择的行为
  • 为什么不在源 selectLIst 中制作一个项目 SelectedValue 使其成为标记项目

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

4

3 回答 3

3

我感觉到你的痛苦。原谅无耻的插件,但您可能会查看MvcFluentHtml。您仍然可以使用 SelectList 和 MultiSelectList,但您还有其他几种选择。应该可以与粘合剂一起使用。

于 2008-12-03T21:04:01.217 回答
2

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

但希望对您有所帮助,以下是我如何使用 SelectList 和我设置的属性的示例:

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

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

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

然后可以访问状态,在我的例子中是“ module.Status”。

于 2009-01-09T05:56:53.307 回答
2

同样,我对 HTML Helpers 也有过很多误解,但没有比 SelectList 更糟糕的了。要添加到投诉列表中,我想知道为什么 SelectList 不接受(或无法处理) generic IEnumerable<T>。同样,您可以将自己的实现组合在一起,但IEnumerable<T>会启用很多方便的功能(例如对 LINQ/Entity Framework 的直接支持),我认为应该提供。

MvcFluentHtml(现在是MvcContrib的一部分)看起来像是一个不错的补充。

于 2008-12-15T22:29:05.627 回答