gpt4 book ai didi

asp.net-mvc - DropDownList 的 ASP.NET MVC 错误绑定(bind)集合?

转载 作者:行者123 更新时间:2023-12-04 16:36:32 25 4
gpt4 key购买 nike

我有一个 View ,其中包含从模型属性生成的 1 个下拉列表和从数组属性生成的 3 个附加下拉列表

@Html.DropDownListFor(m => m.AgentType, Model.AgentTypeListItems)
@for (int i = 0; i < Model.AgentTypes.Length; i++)
{
@Html.DropDownListFor(m => m.AgentTypes[i], Model.AgentTypeListItems)
}

Controller 方法初始化 AgentTypeListItems 集合 + 设置 AgentType 下拉列表的默认值和集合的 3 个下拉列表:
var model = new OptionsViewModel();

// for DropDownListFor
model.AgentTypeListItems = new[]
{
new SelectListItem { Text = "1", Value = "1" },
new SelectListItem { Text = "2", Value = "2" },
new SelectListItem { Text = "3", Value = "3" },
};

// 1 dropdown in the model
model.AgentType = "2";

// 3 dropdowns in array
model.AgentTypes = new[] { "3", "2", "1" };

return View(model);

当我在浏览器中打开它时,尽管 AgentTypes 数组被初始化为不同的值(!),但到处都是“2”:

this is wrong

当我用 TextBoxFor 替换 DropDownListFor 时:
@Html.TextBoxFor(m => m.AgentTypes[i])

我在输入中得到正确的值(!):

this is how it should be

这意味着 TextBoxFor 按预期工作,但 DropDownListFor 没有。

它是 MVC DropDownListFor 中的错误吗?

更新
这是模型类:
public class OptionsViewModel
{
public SelectListItem[] AgentTypeListItems { get; set; }
public string AgentType { get; set; }
public string[] AgentTypes { get; set; }
}

最佳答案

我知道这篇文章已经有一年多了,但它似乎仍然是一个错误。更换

@Html.DropDownListFor(m => m.AgentType, Model.AgentTypeListItems)
@for (int i = 0; i < Model.AgentTypes.Length; i++)
{
@Html.DropDownListFor(m => m.AgentTypes[i], Model.AgentTypeListItems)
}


@Html.DropDownListFor(m => m.AgentType, Model.AgentTypeListItems)
@for (int i = 0; i < Model.AgentTypes.Length; i++)
{
@Html.DropDownListFor(m => m.AgentTypes[i], new SelectList(Model.AgentTypeListItems, "Value", "Text", Model.AgentTypes[i])
}

为我工作。

关于asp.net-mvc - DropDownList 的 ASP.NET MVC 错误绑定(bind)集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5433734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com