我确信这是一个常见的操作,但我很难解决问题.这<select>是网页上的两个问题,其中一个依赖于另一个可能的值列表.
我有一个下拉列表,其中包含网页上的子状态代码,其可能值列表取决于包含状态代码的页面上另一个下拉列表中的选择.在我的控制器中,我从数据库中检索可能的状态代码列表,并将值放在DropDownList HTMLHelper用于在视图中构建我的选择列表的SelectList中.我检索包含状态代码的模型记录,并使用该状态代码值来查找数据库中子状态的可能值,然后将该列表放在另一个SelectList中以获取第二个下拉列表.当用户在状态下拉列表中更改选择时,该页面向服务器发出ajax回调,以使用新的可能值列表重新填充子状态下拉列表.
空状态代码确实不是有效值,但这是一个质量控制应用程序,用于纠正此类问题.我的问题是,在模型上记录的当前状态代码可以有时是空的,所以我的第二个下拉子状态值的列表是空的.不幸的是,似乎无法创建一个空的SelectList传递给DropDownList HTMLHelper,但是当页面加载以支持我的ajax解决方案时,必须创建我的下拉列表.
有没有人制定出有效且超级光滑的方式来处理这种情况?或者,如果子状态SelectList为null,并且是否使用不同的HTML生成下拉列表,我是否需要求助于查看我的视图中的丑陋内容?在我生病的头脑中,能够生成一个空的SelectList以交给HTMLHelper似乎是一个合理的解决方案.我欢迎任何想法.
Ara*_*RRK 27
你可以使用Enumerable.Empty()
@Html.DropDownList("dropdown-name", Enumerable.Empty<SelectListItem>())
Run Code Online (Sandbox Code Playgroud)
可以将空列表传递给 DropDownList。
在你的控制器中,你应该有类似的内容:
var status_code_id = mymodel.status_code_id;
var substatus_code_id = mymodel.substatus_code_id;
ViewData["status_code_id"] = new SelectList(
StatusCodes.FindAll(), "id", "code", status_code_id);
ViewData["substatus_code_id"] = new SelectList(
SubstatusCodes.FindAllForStatus(status_code_id), "id", "code", substatus_code_id);
...其中 FindAllForStatus 包含您在 AJAX 调用中用于填充子状态下拉列表的相同代码。FindAllForStatus 应接受空状态代码并返回空列表。
在你看来,你应该有这样的东西:
<%= Html.DropDownList("status_code_id", "--未选中--")%>
<%= Html.DropDownList("substatus_code_id", "--未选中--")%>
| 归档时间: |
|
| 查看次数: |
16145 次 |
| 最近记录: |