c# - 在 View 中创建新的 SelectList 时未设置 DropDownListFor 值

标签 c# asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

示例 #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/

相关文章:

C# 为什么其中一些使用委托(delegate)和泛型的方法没有启动?

asp.net - 将 css 类添加到 MVCContrib 网格中的行

c# - 测试 ASP.NET MVC Controller Httpget

iis-7 - IIS 7.0/Windows Server 2008 上的 ASP.NET MVC 3 应用程序出现 404.0 错误

asp.net - ASP.NET MVC 中的静态页面

c# - 如何使用 LINQ C# 正确搜索 xml 文档

c# - 将多个 XSD 合并到一个文件中

c# - 隐藏的 ASP/C# 代码无法从标记获得控制

c# - ASP.NET 5 MVC 6 多语言应用

ajax - 如何在同一个 MVC3 页面上使用多个带有 AntiForgery 验证的 ajax 表单?