我看到this,但我有不同的问题。我有这样的观点:
@model myPrj.Models.RollCallModel
...
<table>
<tr> //Master DDL
<td>
@Html.LabelFor(model => model.CourseID)
@Html.DropDownListFor(model => model.CourseID,
new SelectList(new myPrj.Models.myDbContext().Courses
.Where(c => c.StatusID == 0), "ID", "ID"),
"choose...", new { id = "ddlCourse"})
@Html.ValidationMessageFor(model => model.CourseID)
</td>
</tr>
<tr> //Detail DDL
<td>
@Html.LabelFor(model => model.PersonnelID)
@Html.DropDownListFor(model => model.PersonnelID,
null, "choose another...", new { id = "ddlPersonnel"})
@Html.ValidationMessageFor(model => model.PersonnelID)
</td>
</tr>
</table>
...
我对jquery级联更新了解得足够多。我的问题是,是否可以对这些DDL执行级联更新,而无需为Detail DDL编写<option>something</option>
的迭代?如果不是,最方便的选择是什么?
注意:事实上,由于模型绑定的惯例,我正在尝试使用html帮助器呈现细节DDL。如果我别无选择,只能按<select id=""></select>
呈现它,我该如何将此select
元素绑定到模型?
感谢名单
更新:似乎没有办法......(还在等待并确实在搜索...)
答案 0 :(得分:0)
呀!当然有:See this for details。但是,它需要一个额外的操作方法和每个Detail DDL的部分视图。
最后我喜欢决定通过JQuery并迭代地在JsonResult上添加<options>
...
答案 1 :(得分:0)
要在MVC中填充下拉列表,请将其作为视图中的替代选项:
@Html.DropDownListFor(model => model.CourseID, new SelectList((IList<SelectListItem>)ViewData["MyCourse"],
"Value", "Text"), new { @class = "span5" })
支持View你应该在相应的控制器动作中写下以下内容:
public ActionResult RoleList(int id)
{
ViewData["MyCourse"] = FillCourseList(id);
CourseModel model = new CourseModel();
model.courseid= id;
return View(model);
}
要填充ViewData,您需要在同一个控制器中使用相应的功能,如下所示:
public IList<SelectListItem> FillCourseList(int id)
{
List<master_tasks> lst = new List<master_tasks>();
lst = _taskInterface.getMasterTasks();
IList<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem
{
Text = "Select Task",
Value = "0"
});
for (int i = 0; i < lst.Count; i++)
{
items.Add(new SelectListItem
{
Text = lst[i].code + " - " + lst[i].name,
Value = lst[i].id.ToString()
});
}
return items;
}
IList是一个通用列表,其列表项为Html.Dropdownlist为IEnumerable项进行了类型化。