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;