Asp.net mvc 3 Edit()[Razor]视图下拉列表,预加载模型中的数据
我的Create()视图中的下拉列表工作正常 但是在Edit()视图中,我无法获取在Create()过程中提交的数据,以在Create()时输入的值显示在下拉列表中 我现在只准备了文本框,我真的很想在下拉列表中显示数据,以便于选择 这里有一个例子: Create()视图-一个下拉列表用于EmployeeTypes,并存储选定的EmployeeTypeId 现在,我如何让它在Edit()视图中显示为相同的下拉列表,但已选择EmployeeId的值Asp.net mvc 3 Edit()[Razor]视图下拉列表,预加载模型中的数据,asp.net-mvc-3,c#-4.0,drop-down-menu,razor,Asp.net Mvc 3,C# 4.0,Drop Down Menu,Razor,我的Create()视图中的下拉列表工作正常 但是在Edit()视图中,我无法获取在Create()过程中提交的数据,以在Create()时输入的值显示在下拉列表中 我现在只准备了文本框,我真的很想在下拉列表中显示数据,以便于选择 这里有一个例子: Create()视图-一个下拉列表用于EmployeeTypes,并存储选定的EmployeeTypeId 现在,我如何让它在Edit()视图中显示为相同的下拉列表,但已选择EmployeeId的值 我有一个用于Create()视图的Employe
我有一个用于Create()视图的EmployeeViewModel 但我只是将模型直接传递到Edit()视图中 我应该为Edit()视图创建某种类型的Employee“分部类”吗?要处理IEnumerable列表 并设置:
var employeeTypes = context.EmployeeTypes.Select(et => new SelectListItem
{
Value = et.EmployeeTypeId.ToString(),
Text = et.Type.ToString()
});
或者我应该将它们作为ViewData传入
如果是这样,如何将列表作为ViewData传入并显示为@Html.DropDownList,其中@Model传入的值作为default值?此代码中可能存在错误-我还没有测试它-但您基本上想做的是:
var etId = ??? // EmployeeTypeId from your model
var employeeTypes = context.EmployeeTypes.Select(et => new SelectListItem
{
Value = et.EmployeeTypeId.ToString(),
Text = et.Type.ToString(),
Selected = et.EmployeeTypeId == etId
});
ViewData["EmployeeTypeList"] = employeeTypes.ToList();
那么在你看来你可以做什么
@Html.DropDownList("EmployeeType", ViewData["EmployeeTypeList"])
我最终以这种方式实现了,它就像一场梦 控制器代码:
SelectList typelist = new SelectList(context.CompanyType.ToList(), "CompanyTypeId", "Type", context.CompanyType);
ViewData["CompanyTypes"] = typelist;
查看代码:
@Html.DropDownList("CompanyTypeId", (IEnumerable<SelectListItem>) ViewData["CompanyTypes"])
@Html.DropDownList(“CompanyTypeId”,(IEnumerable)ViewData[“CompanyTypes”])
我是否错过了某种参考?我在Create()视图中使用了@Html.DropDownBox()。编译器错误消息:CS1928:“System.Web.Mvc.HtmlHelper”不包含“DropDownList”的定义和“System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper,string,string)”的最佳扩展方法重载。DropDownList(System.Web.Mvc.HtmlHelper,string,string)包含一些无效的参数。这是来自my View()的Sytax:@Html.DropDownList(“EmployeeTypeId”,ViewData[“EmployeeTypeList”])@Html.ValidationMessageFor(model=>model.EmployeeTypeId)@Timothy Green-这很有趣。DropDownList覆盖在MVC2中。我将在MVC3中进行一些挖掘,看看我能找到什么。@Timothy Green-您的项目中有对System.Web.Mvc.Html的引用吗(Web.config)?如何在此下拉列表中选择编辑表单中的索引