示例 #1(这个有效)
@Html.DropDownListFor(m => m.State.Id, Model.States)
我正在为第一个示例在 Controller 中创建 SelectList。
var states = Repository.GetStates();
var statesSelectList = new SelectList(states, "Id", "Name");
//model.States is a SelectList
model.States = statesSelectList;
示例 #2(这不会在加载时设置选定值)
@Html.DropDownListFor(m => m.State.Id, new SelectList(Model.States, "Id", "Name"))
我正在为第二个示例在 View 中创建 SelectList, Controller 如下所示。
//model.States is a List<State>.
model.States = Repository.GetStates();
看来一定有一些简单的东西是我遗漏的。如果我需要澄清其他任何事情,请告诉我。谢谢。
最佳答案
向您的 View 模型添加一个属性:
private int? stateId;
public int StateId
{
get { return stateId ?? State.Id; }
set { stateId = value; }
}
然后在你的 Razor View 中:
@Html.DropDownListFor(m => m.StateId, new SelectList(Model.States, "Id", "Name"))
最后在您的 Controller 中执行 POST 操作:
model.State = Repository.GetState(model.StateId);
关于c# - 在 View 中创建新的 SelectList 时未设置 DropDownListFor 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878584/