DropDownListFor 不绑定到模型列表中的值
DropDownListFor not binding to value in a list of models
我有以下两个模型,其中一个包含另一个模型的列表,即 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>();
}
}
当我尝试将此 UserModel 列表绑定到具有多个 DropDownList 的 MVC Razor 页面时,值未绑定且 DropDownList 中的 selected 项目未正确显示。
@for(int i=0; i < Model.Users.Count; i++)
{
@Html.DropDownListFor(x => x.Users[i].SelectedUserId, Model.Users[i].UserOptions)
}
但是,如果我 select 页面上每个 DropDownList 中的不同值,然后 post 将表单返回到服务器,则正确的值会绑定到模型列表中的每个单独的 UserModel 中,即'Users'.
我是不是漏掉了什么?这是一个已知的错误?为什么在服务器上的每个模型中设置 SelectedUserId 的值时, select 列表中的正确选项未绑定,但 selecting select 列表中的选项网页有效吗?
@Html.DropDownListFor 的工作方式很奇怪,当你初始化一个时,你也必须初始化 selected 值。因此,如果您创建这样的列表:
Users.Add(new UserModel { SelectedUserId = "2" });
您必须在 UserModel 中分配 selected 项:
List<SelectListItem> users=null;
public string SelectedUserId
{
get { return users.Where(u=>u.Selected).FirstOrDefault().Value; }
set {
var sUser=users.Where(u=>u.Value=value).FirstOrDefault();
sUser.Selected=true;
}
}
如果你使用网络核心更好地使用“select”标签。它会自动分配。
我有以下两个模型,其中一个包含另一个模型的列表,即 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>();
}
}
当我尝试将此 UserModel 列表绑定到具有多个 DropDownList 的 MVC Razor 页面时,值未绑定且 DropDownList 中的 selected 项目未正确显示。
@for(int i=0; i < Model.Users.Count; i++)
{
@Html.DropDownListFor(x => x.Users[i].SelectedUserId, Model.Users[i].UserOptions)
}
但是,如果我 select 页面上每个 DropDownList 中的不同值,然后 post 将表单返回到服务器,则正确的值会绑定到模型列表中的每个单独的 UserModel 中,即'Users'.
我是不是漏掉了什么?这是一个已知的错误?为什么在服务器上的每个模型中设置 SelectedUserId 的值时, select 列表中的正确选项未绑定,但 selecting select 列表中的选项网页有效吗?
@Html.DropDownListFor 的工作方式很奇怪,当你初始化一个时,你也必须初始化 selected 值。因此,如果您创建这样的列表:
Users.Add(new UserModel { SelectedUserId = "2" });
您必须在 UserModel 中分配 selected 项:
List<SelectListItem> users=null;
public string SelectedUserId
{
get { return users.Where(u=>u.Selected).FirstOrDefault().Value; }
set {
var sUser=users.Where(u=>u.Value=value).FirstOrDefault();
sUser.Selected=true;
}
}
如果你使用网络核心更好地使用“select”标签。它会自动分配。