C# 在Mvc中绑定DropDownList并获取所选值

C# 在Mvc中绑定DropDownList并获取所选值,c#,asp.net-mvc,c#-4.0,C#,Asp.net Mvc,C# 4.0,我的模型是 public class ChildMenu { public string Name { get; set; } public string Comments { get; set; } public List<UlrikenModel.ulriken_tblChildMenu> FormDetails { get; set; } public long pkChildMenuID { get; set; } public lon

我的模型是

public class ChildMenu
{
    public string Name { get; set; }
    public string Comments { get; set; }
    public List<UlrikenModel.ulriken_tblChildMenu> FormDetails { get; set; }
    public long pkChildMenuID { get; set; }
    public long fkSubMenuID { get; set; }

    [Required(ErrorMessage = "Requird")]
    public string ChildManuName { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime ModifiedDate { get; set; }
    public string Events { get; set; }
    public IList<SelectListItem> Drp_Submenu { get; set; }

}
公共类子菜单
{
公共字符串名称{get;set;}
公共字符串注释{get;set;}
公共列表FormDetails{get;set;}
公共长pkChildMenuID{get;set;}
公共长子菜单ID{get;set;}
[必需(ErrorMessage=“Requird”)]
公共字符串ChildManuName{get;set;}
公共日期时间CreatedDate{get;set;}
公共日期时间修改日期{get;set;}
公共字符串事件{get;set;}
公共IList Drp_子菜单{get;set;}
}
我的控制器操作是:

 public ActionResult FillDeptName()

        {
            UlrikenEntities db1 = new UlrikenModel.UlrikenEntities();

            List<SelectListItem> list = new List<SelectListItem>();

            list.Add(new SelectListItem { Text = "-Please select-", Value = "Selects 

items" });

            var cat = (from c in db1.ulriken_tblSubMenu where c.fkMainMenuID == 1 && 

c.Status == true select new { c.pkSubMenuID,c.SubManuName }).ToArray();

            for (int i = 0; i < cat.Length; i++)

            {

                list.Add(new SelectListItem

                {

                    Text = cat[i].SubManuName,

                    Value = cat[i].pkSubMenuID.ToString(),

                    Selected = (cat[i].pkSubMenuID == 1)

                });

            }          

            ViewBag.list = list;            

            return View("ChildMenuOfSubMenu", ViewBag.list);

        }

        [HttpPost]

        [ValidateInput(false)]

        public ActionResult ChildMenuOfSubMenu(ChildMenu obj)

        {

            UlrikenEntities db = new UlrikenEntities();

            ulriken_tblChildMenu objchild = new ulriken_tblChildMenu();

            objchild.fkSubMenuID = obj.fkSubMenuID;

            objchild.ChildMenuName = obj.ChildManuName;

            objchild.cPageBody = obj.Name;

            db.ulriken_tblChildMenu.Add(objchild);

            db.SaveChanges();

            return View("ChildMenuOfSubMenu");

        }
public ActionResult FillDeptName()
{
UlrikenEntities db1=新的UlrikenModel.UlrikenEntities();
列表=新列表();
list.Add(new SelectListItem{Text=“-Please select-”,Value=“Selects
项目“}”;
var cat=(来自db1.ulriken_tblSubMenu中的c,其中c.fkMainMenuID==1&&
c、 Status==true选择新的{c.pksubnumuid,c.subnumname}).ToArray();
对于(int i=0;i
而且景色很美

 @Html.DropDownListFor(m=>m.fkSubMenuID, 

(IEnumerable<SelectListItem>)ViewBag.list,"Select" ,new { id = "ddlSubMenu" })
@Html.DropDownListFor(m=>m.fksubemunid,
(IEnumerable)ViewBag.list,“选择”,新建{id=“ddlSubMenu”})
开始时,下拉列表绑定成功,但将数据保存到数据库后,在中显示异常

“没有具有键的“
IEnumerable
”类型的ViewData项。”

“子菜单ID”


有人告诉我哪里做错了。

将代码移到helper类:

public class ControllerHelper
{
    public List<SelectListItem> FetchListItems()
    {

        List<SelectListItem> list = new List<SelectListItem>();

        list.Add(new SelectListItem { Text = "-Please select-", Value = "Selects items" });

        var cat = (from c in db1.ulriken_tblSubMenu where c.fkMainMenuID == 1 && 

        c.Status == true select new { c.pkSubMenuID,c.SubManuName }).ToArray();

        for (int i = 0; i < cat.Length; i++)

        {

            list.Add(new SelectListItem

            {

                Text = cat[i].SubManuName,

                Value = cat[i].pkSubMenuID.ToString(),

                Selected = (cat[i].pkSubMenuID == 1)

            });

        }
    return list;
    }
}
当然:

new ControllerHelper().FetchListItems();
应为控制器类中的字段,例如:

private ControllerHelper controlerHelper;
如果您使用DI,您可以使用接口而不是Concrete实现

问候

private ControllerHelper controlerHelper;