首页 新闻 会员 周边

MVC 如何Edit动态下拉菜单?

0
悬赏园豆:50 [待解决问题]

我有个表单,里面有三个动态的下拉菜单,都是一对多的关系,一开始都是空的。当用户在第一下拉菜单选中一个value时,第二个下拉菜单动态加载对应的values,当用户在第二个下拉菜单选中某一value时,第三个下拉菜单会动态加载相应的values。
用户可以创建表单并submit。我的CreateController的GET 和 POST 都没有问题。
现在需要EditController来允许用户修改他所创建的表单。问题就出在如何得到下拉菜单已选定的item。
第一个下拉菜单的value是直接从model获取,所以第一个菜单可以显示已选定的item1。
但第二个下拉菜单就显示不出了。我需要首先加载所有跟item1相对应的所有items,并显示已选定的item2.
我用的是viewMOdel:

       /// <summary>
        /// Technique Selection
        /// </summary>
        public Nullable<int> Tech_ID { get; set; }
        public string TechniqueName { get; set; }
        public SelectList Techniques { get; set; }

        /// <summary>
        /// Business Unit Selection
        /// </summary>
        ///
        public Nullable<int> BU_ID { get; set; }
        public string BuName { get; set; }
        public SelectList BusinessUnits { get; set; }

 

我的EditController GET 方法:

 

     //第一个菜单可以显示已选定的item

         ViewBag.Bulist = new SelectList(AllBus, "BU_ID", "BU_Title", form.BU_ID); 

     ///第二个下拉菜单就显示不出了

         var butechList = GetTechList(Convert.ToInt32(form.BU_ID));
          IEnumerable<SelectListItem> butechs = butechList.Select(m => new SelectListItem()
            {
                Value = m.Tech_ID.ToString(),
                Text = m.Technique.Tech_Title
            });

            ViewBag.Techlist = new SelectList(butechs, "Tech_ID", "Tech_Title", form.Tech_ID);

 

我的View page:

第一个菜单可以显示已选定的item:

                   @Html.DropDownListFor(model => model.BU_ID, new SelectList((IEnumerable<SelectListItem>)@ViewBag.Bulist, "Value", "Text",
                      Model.BU_ID),
                          new
                          {
                              id = "ddlBU"
                          })

 

第二个下拉菜单就显示不出了:

                    @Html.DropDownListFor(model => model.Tech_ID, new SelectList((IEnumerable<SelectListItem>)@ViewBag.Techlist, "Value", "Text",
                      Model.Tech_ID),
                          new
                          {
                              id = "ddlTechs"
                              
                          })

nechnay的主页 nechnay | 初学一级 | 园豆:106
提问于:2016-01-13 18:15
< >
分享
所有回答(2)
0

@Html.DropDownList("Bulist")

@Html.DropDownList("Techlist")

jello chen | 园豆:7336 (大侠五级) | 2016-01-13 23:22

谢大哥 但是用DropDownList不能跟模型绑定啊,只能用DropDownListFor

支持(0) 反对(0) nechnay | 园豆:106 (初学一级) | 2016-01-20 18:15

@nechnay: 我试了下,换成强类型的××For也一样可以得

支持(0) 反对(0) jello chen | 园豆:7336 (大侠五级) | 2016-01-20 21:02
0

form.Techniques = new SelectList(techlist, "Tech_ID", "Tech_Title");

form.LeadEngineers = new SelectList(leadlist, "User_ID", "fullName");

In view page:

@Html.DropDownListFor(model => model.Tech_ID, Model.Techniques)

 @Html.DropDownListFor(model => model.UserLead_ID, Model.LeadEngineers)

nechnay | 园豆:106 (初学一级) | 2016-01-20 21:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册