级联两个@ Html.DropDownListFor的更新中MVC4与模型绑定(Cascading

2019-10-29 04:11发布

我看到这个 ,但是我有一个不同的问题:我有一个观点是这样的:

@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级联更新。 我的Q是这是有可能无需编写的迭代进行级联更新这些的DDL <option>something</option>的详细DDL? 如果没有,什么是最方便的选择吗?

注意:其实我试图渲染,因为模型的结合公约的HTML辅助细节DDL。 如果我没有选择,只能通过以使其<select id=""></select> ,我怎么能结合这个select的模型元素?

感谢名单

更新:似乎没有办法......(仍在等待确实搜索...)

Answer 1:

是啊! 当然有: 详见本 。 然而,它需要一个附加的操作方法,并为每个详细DDL的局部视图。

最后我想决定要经过jQuery和iterationally加入<options>在JsonResult ...



Answer 2:

要填充在MVC一个下拉列表使用这个作为你的视图的选择:

@Html.DropDownListFor(model => model.CourseID, new SelectList((IList<SelectListItem>)ViewData["MyCourse"],
                                            "Value", "Text"), new { @class = "span5" })

支持你应该写在相应的控制器动作如下的观点:

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.Dropdownlistfor IEnumerable的项目列表项。



文章来源: Cascading update of two @Html.DropDownListFor in MVC4 with model binding