Asp.net mvc 5 DropDownList用于在编辑屏幕上未选择正确的值

Asp.net mvc 5 DropDownList用于在编辑屏幕上未选择正确的值,asp.net-mvc-5,html-helper,html.dropdownlistfor,Asp.net Mvc 5,Html Helper,Html.dropdownlistfor,我正在使用一个下拉列表作为表单。当我创建表单时,它可以正常工作并保存。但是当我将其加载到编辑屏幕时,默认情况下没有选择正确的选项。而是选择了第一个选项 我在视图中的行上放置了一个断点,以查看属性的id/值是否正确。我只是不确定视图中的代码是否错误,或者我是如何将其传递给控制器的 我以前使用过DropDownList,它工作正常,但出于验证目的,我切换到DropDownList for,我立即遇到了这个问题 查看(编辑) 控制器 List<ItemInfo> itemIDItems =

我正在使用一个下拉列表作为表单。当我创建表单时,它可以正常工作并保存。但是当我将其加载到编辑屏幕时,默认情况下没有选择正确的选项。而是选择了第一个选项

我在视图中的行上放置了一个断点,以查看属性的id/值是否正确。我只是不确定视图中的代码是否错误,或者我是如何将其传递给控制器的

我以前使用过DropDownList,它工作正常,但出于验证目的,我切换到DropDownList for,我立即遇到了这个问题

查看(编辑)

控制器

List<ItemInfo> itemIDItems = dbContext.Items.OrderBy(item => item.Item_Title).ToList<ItemInfo>();
ViewBag.Item_ID = new SelectList(itemIDItems, "Item_ID", "Item_Title", object.Item_ID);

您需要更改
ViewBag
属性的名称,使其与绑定到的属性的名称不匹配。例如,GET方法应该是

var model=//获取现有模型
List itemIDItems=dbContext.Items.OrderBy(item=>item.item_Title).ToList();
ViewBag.ItemList=新建SelectList(itemiItems,“Item_ID”,“Item_Title”);
返回视图(模型);
请注意,
SelectList
构造函数的第4个参数是不必要的(它被
DropDownListFor()
方法忽略),因为它是您绑定到的属性的值,决定了选择哪个选项

而且景色会很美

@Html.DropDownListFor(m=>m.Item_ID,(SelectList)ViewBag.ItemList,新的{@class=“form control”})

如果
Item\u ID
的值与其中一个选项的值匹配,则将选择该选项。

请将您的型号放在另一个位置,否则Viewbag的使用方向不正确,我认为您需要将属性添加到模型中,以表示DropDownstand的选定值。请同时发布已添加的
ItemInfo
classModels/class。
List<ItemInfo> itemIDItems = dbContext.Items.OrderBy(item => item.Item_Title).ToList<ItemInfo>();
ViewBag.Item_ID = new SelectList(itemIDItems, "Item_ID", "Item_Title", object.Item_ID);
public int Obj_ID { get; set; }
...
public Nullable<int> Item_ID { get; set; }
...
public virtual Items Items { get; set; }
public int Item_ID { get; set; }
public string Item_Title { get; set; }