DropDownListFor 未在编辑屏幕上选择正确的值
DropDownListFor not selecting the right value on an Edit screen
我正在为表单使用下拉列表。当我创建表单时,它可以正常工作并保存。但是当我将它加载到编辑屏幕时,默认情况下没有选择正确的选项。相反,正在选择第一个选项。
我在视图中的行中放置了一个断点,以查看 属性 的 id/value 是否正确,确实如此。我只是不确定是视图中的代码有误还是我如何通过控制器传递代码。
我之前使用 DropDownList 并且它工作正常,但是为了验证目的我切换到 DropDownListFor 并且我立即遇到了这个问题。
查看(编辑)
@Html.DropDownListFor(model => model.Item_ID, (SelectList)ViewBag.Item_ID, new { @class = "form-control" })
控制器
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);
模型(对象,通过EF生成)
public int Obj_ID { get; set; }
...
public Nullable<int> Item_ID { get; set; }
...
public virtual Items Items { get; set; }
模型(项目,通过 EF 生成)
public int Item_ID { get; set; }
public string Item_Title { get; set; }
您需要更改 ViewBag
属性 的名称,使其与您绑定的 属性 的名称不匹配。例如你的 GET 方法应该是
var model = // get your existing model
List<ItemInfo> itemIDItems = dbContext.Items.OrderBy(item => item.Item_Title).ToList<ItemInfo>();
ViewBag.ItemList = new SelectList(itemIDItems, "Item_ID", "Item_Title");
return View(model);
请注意,SelectList
构造函数的第 4 个参数是不必要的(它被 DropDownListFor()
方法忽略)因为它是 属性 的值,您绑定到它决定了哪个选项已选中。
视图将是
@Html.DropDownListFor(m => m.Item_ID, (SelectList)ViewBag.ItemList, new { @class = "form-control" })
如果 Item_ID
的值与其中一个选项的值匹配,则将选择该选项。
我正在为表单使用下拉列表。当我创建表单时,它可以正常工作并保存。但是当我将它加载到编辑屏幕时,默认情况下没有选择正确的选项。相反,正在选择第一个选项。
我在视图中的行中放置了一个断点,以查看 属性 的 id/value 是否正确,确实如此。我只是不确定是视图中的代码有误还是我如何通过控制器传递代码。
我之前使用 DropDownList 并且它工作正常,但是为了验证目的我切换到 DropDownListFor 并且我立即遇到了这个问题。
查看(编辑)
@Html.DropDownListFor(model => model.Item_ID, (SelectList)ViewBag.Item_ID, new { @class = "form-control" })
控制器
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);
模型(对象,通过EF生成)
public int Obj_ID { get; set; }
...
public Nullable<int> Item_ID { get; set; }
...
public virtual Items Items { get; set; }
模型(项目,通过 EF 生成)
public int Item_ID { get; set; }
public string Item_Title { get; set; }
您需要更改 ViewBag
属性 的名称,使其与您绑定的 属性 的名称不匹配。例如你的 GET 方法应该是
var model = // get your existing model
List<ItemInfo> itemIDItems = dbContext.Items.OrderBy(item => item.Item_Title).ToList<ItemInfo>();
ViewBag.ItemList = new SelectList(itemIDItems, "Item_ID", "Item_Title");
return View(model);
请注意,SelectList
构造函数的第 4 个参数是不必要的(它被 DropDownListFor()
方法忽略)因为它是 属性 的值,您绑定到它决定了哪个选项已选中。
视图将是
@Html.DropDownListFor(m => m.Item_ID, (SelectList)ViewBag.ItemList, new { @class = "form-control" })
如果 Item_ID
的值与其中一个选项的值匹配,则将选择该选项。