Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 Edit()[Razor]视图下拉列表,预加载模型中的数据_Asp.net Mvc 3_C# 4.0_Drop Down Menu_Razor - Fatal编程技术网

Asp.net mvc 3 Edit()[Razor]视图下拉列表,预加载模型中的数据

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()视图中的下拉列表工作正常

但是在Edit()视图中,我无法获取在Create()过程中提交的数据,以在Create()时输入的值显示在下拉列表中

我现在只准备了文本框,我真的很想在下拉列表中显示数据,以便于选择

这里有一个例子:

Create()视图-一个下拉列表用于EmployeeTypes,并存储选定的EmployeeTypeId

现在,我如何让它在Edit()视图中显示为相同的下拉列表,但已选择EmployeeId的值


我有一个用于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)?如何在此下拉列表中选择编辑表单中的索引