刚开始使用MVC3时,在视图中构建下拉菜单时遇到了问题。使用项目的SelectList填充ViewModel:
mdm.CaptionSetList=new SelectList(CaptionSet.Fetch(), "CaptionSetId", "Description")
然后在视图中使用:
@Html.DropDownListFor(model => model.Entity.CaptionSetId, model.CaptionSetList)
但当页面命中时,该行会突出显示编译器消息:
模型编译器错误消息: CS0103:名称‘
’在当前上下文中不存在
我犯的初学者的错误是什么?
发布于 2011-04-10 07:33:44
DropDownListFor的第一个参数是一个函数,因此该部分是正确的,但第二部分只是期望一个SelectList,所以您所需要做的就是
@Html.DropDownListFor(model => model.Entity.CaptionSetId, Model.CaptionSetList)
注意大小写。
进一步澄清
在强类型视图中,Model
是一个引用绑定到视图的模型的属性。由于第二个参数只是期望一个列表,并且您已经指定该模型有一个名为CaptionSetList的属性,因此您将该列表指定为Model.CaptionSetList
。如果你把这个列表放在ViewBag
里,你就会把ViewBag.CaptionSetList
放进去。
这与第一个参数形成对比,第一个参数是一个函数,它接受一个与模型类型相同的参数。
发布于 2019-06-04 03:07:45
得到相同的错误。
在我的例子中,我做了一些搜索和替换,忘记了修改lambda表达式:
@Html.DropDownListFor(m => model.StagingDelegate.ManagerId, new[]{
new SelectListItem() {Text = "ManagerId 1", Value = "1"},
new SelectListItem() {Text= "ManagerId 2", Value= "2"},
}, "Choose a Manager", new { @class = "form-control form-control-sm " })
用模型=>替换m =>:
@Html.DropDownListFor(model => model.StagingDelegate.ManagerId, new[]{
new SelectListItem() {Text = "ManagerId 1", Value = "1"},
new SelectListItem() {Text= "ManagerId 2", Value= "2"},
}, "Choose a Manager", new { @class = "form-control form-control-sm " })
https://stackoverflow.com/questions/5608626
复制相似问题