Asp.net mvc 未选择项的MVC3下拉列表(Mvc错误?)
我有一个简单的测试模型:Asp.net mvc 未选择项的MVC3下拉列表(Mvc错误?),asp.net-mvc,asp.net-mvc-3,html.dropdownlistfor,mvc-editor-templates,Asp.net Mvc,Asp.net Mvc 3,Html.dropdownlistfor,Mvc Editor Templates,我有一个简单的测试模型: public class MyModel { public InnerModel InnerModel { get; set; } } public class InnerModel { public int Value { get; set; } } 在控制器中: public ActionResult Index() { var model = new MyModel();
public class MyModel
{
public InnerModel InnerModel { get; set; }
}
public class InnerModel
{
public int Value { get; set; }
}
在控制器中:
public ActionResult Index()
{
var model = new MyModel();
model.InnerModel = new InnerModel { Value = 3 };
return View("MyModelView", model);
}
MyModelView:
@model MyModel
@{
var items = new List<SelectListItem>()
{
new SelectListItem {Text = "one", Value = "1"},
new SelectListItem {Text = "two", Value = "2"},
new SelectListItem {Text = "three", Value = "3"}
}; }
@Html.DropDownListFor(m=>m.InnerModel.Value,items,"no_selected")
加载页面时,我看到:
为什么??MVC错误
更新:
这才是真正的臭虫 使用@Model InnerModel更改此
@Html.DropDownListFor(m=>m.InnerModel.Value,items,"no_selected")
到
使用@Model InnerModel更改此设置
@Html.DropDownListFor(m=>m.InnerModel.Value,items,"no_selected")
到
创建所选项目列表时,请尝试以下操作:
var items = new SelectList(
new[]
{
new { Value = "1", Text = "one" },
new { Value = "2", Text = "two" },
new { Value = "3", Text = "three" },
},
"Value",
"Text",
Model.Value
)
以下是发生这种情况的原因说明:在创建所选项目列表时,请尝试以下操作:
var items = new SelectList(
new[]
{
new { Value = "1", Text = "one" },
new { Value = "2", Text = "two" },
new { Value = "3", Text = "three" },
},
"Value",
"Text",
Model.Value
)
以下是发生这种情况的原因解释:对不起,输入错误。在InnerModel编辑器@Html.DropDownListFor中(m=>m.Value,项,“未选择”)。问题正确。对不起,输入错误。在InnerModel编辑器@Html.DropDownListFor中(m=>m.Value,项,“未选择”)。正确的问题。如果这是您经常做的事情,那么将其放入HTML帮助程序中,它将使其变得漂亮:)您链接的页面上说“仅当此lambda表达式是一个简单的属性访问表达式时”。我的lambda很简单。我不明白为什么它不起作用。你是对的,这是MVC中的一个缺陷,请看-上面的解决方案是一个解决方法。看起来它在MVC4中是固定的。如果这是您经常做的事情,则将其放入HTML帮助程序中,然后它将使其变得漂亮:)您链接的页面上显示“仅当此lambda表达式是简单的属性访问表达式时”。我的lambda很简单。我不明白为什么它不起作用。你是对的,这是MVC中的一个缺陷,请看-上面的解决方案是一个解决方法。看起来它在MVC4中被修复了。
var items = new SelectList(
new[]
{
new { Value = "1", Text = "one" },
new { Value = "2", Text = "two" },
new { Value = "3", Text = "three" },
},
"Value",
"Text",
Model.Value
)