【发布时间】:2021-05-17 01:42:37
【问题描述】:
我有以下两个模型,其中一个包含另一个模型的列表,即 UserModels。
public class UserModel
{
public int SelectedUserId { get; set; }
public SelectList UserOptions { get; set; }
public UserModel()
{
var users = new List<SelectListItem>
{
new SelectListItem { Text = "Mickey Mouse", Value = "1" },
new SelectListItem { Text = "Goofy", Value = "2" },
new SelectListItem { Text = "Donald Duck", Value = "3" },
};
UserOptions = new SelectList(users, "Value", "Text");
}
}
public class MyModel
{
public IList<UserModel> Users { get; set; }
public MyModel()
{
Users = new List<UserModel>();
}
}
当我尝试将此 UserModels 列表绑定到具有多个 DropDownList 的 MVC Razor 页面时,值未绑定,并且 DropDownList 中的选定项目未正确显示。
@for(int i=0; i < Model.Users.Count; i++)
{
@Html.DropDownListFor(x => x.Users[i].SelectedUserId, Model.Users[i].UserOptions)
}
但是,如果我在页面上的每个 DropDownList 中选择不同的值,然后将表单发送回服务器,则正确的值将绑定在模型列表中的每个单独的 UserModel 中,即“用户”。
我在这里遗漏了什么吗?这是一个已知的错误?为什么在服务器上设置每个模型的SelectedUserId的值时,选择列表中正确的选项没有绑定,但是在网页的选择列表中选择一个选项有效?
【问题讨论】:
-
如何创建 List
用户? -
例如-Users.Add(new UserModel { SelectedUserId = 2 });
-
@Sergey 我是否必须在每个 UserModel SelectList 的每个 UserOptions 中将选定的 SelectListItem 显式设置为 Selected?
标签: c# asp.net-mvc razor model-binding