C# 在视图中创建新的SelectList时,DropDownList for值未设置
示例#1(这一个有效) 我正在控制器中为第一个示例创建SelectList,如下所示C# 在视图中创建新的SelectList时,DropDownList for值未设置,c#,asp.net-mvc,asp.net-mvc-3,razor,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,Asp.net Mvc 4,示例#1(这一个有效) 我正在控制器中为第一个示例创建SelectList,如下所示 var states = Repository.GetStates(); var statesSelectList = new SelectList(states, "Id", "Name"); //model.States is a SelectList model.States = statesSelectList; //model.States is a List<State>. mode
var states = Repository.GetStates();
var statesSelectList = new SelectList(states, "Id", "Name");
//model.States is a SelectList
model.States = statesSelectList;
//model.States is a List<State>.
model.States = Repository.GetStates();
示例#2(这不会设置加载时的选定值)
我在视图中为第二个示例创建SelectList,控制器如下所示
var states = Repository.GetStates();
var statesSelectList = new SelectList(states, "Id", "Name");
//model.States is a SelectList
model.States = statesSelectList;
//model.States is a List<State>.
model.States = Repository.GetStates();
//model.States是一个列表。
model.States=Repository.GetStates();
看来我错过了一些简单的东西。如果我还需要澄清什么,请告诉我。谢谢。简单,是的。显然没有。
DropDownListFor
不会绑定到嵌套对象,如m=>m.State.Id
它是为更基本的关系而设计的,比如
m=>m.Id
简单,是的。显然没有。DropDownListFor
不会绑定到嵌套对象,如m=>m.State.Id
它设计用于更基本的关系,如
m=>m.Id
向视图模型添加属性:
private int? stateId;
public int StateId
{
get { return stateId ?? State.Id; }
set { stateId = value; }
}
在你看来:
@Html.DropDownListFor(m => m.StateId, new SelectList(Model.States, "Id", "Name"))
最后,在控制器的后期操作中:
model.State = Repository.GetState(model.StateId);
将特性添加到视图模型中:
private int? stateId;
public int StateId
{
get { return stateId ?? State.Id; }
set { stateId = value; }
}
在你看来:
@Html.DropDownListFor(m => m.StateId, new SelectList(Model.States, "Id", "Name"))
最后,在控制器的后期操作中:
model.State = Repository.GetState(model.StateId);
我喜欢您的实现,但我喜欢Dave A关于绑定到嵌套对象的简单解释。谢谢我喜欢您的实现,但我喜欢Dave A关于绑定到嵌套对象的简单解释。谢谢