刚开始使用MVC3并尝试在视图中构建下拉列表时遇到问题。 ViewModel填充了项目的SelectList:
mdm.CaptionSetList=new SelectList(CaptionSet.Fetch(), "CaptionSetId", "Description")
然后在视图中使用:
@Html.DropDownListFor(model => model.Entity.CaptionSetId, model.CaptionSetList)
但是当页面被点击时,该行会突出显示编译器消息:
编译器错误消息:CS0103:当前上下文中不存在名称“model”
我正在制作的初学者错误是什么?
答案 0 :(得分:5)
DropDownListFor的第一个参数是一个函数,因此part是正确的,但第二个部分只是期望一个SelectList所以你需要做的就是
@Html.DropDownListFor(model => model.Entity.CaptionSetId, Model.CaptionSetList)
注意大小写。
进一步澄清
在强类型视图中Model
是一个属性,它引用绑定到视图的模型。由于第二个参数只是期望一个列表,并且您已指定Model具有名为CaptionSetList的属性,因此您将列表指定为Model.CaptionSetList
。如果您已将列表放在ViewBag
中,则可以放置ViewBag.CaptionSetList
。
将此与第一个参数进行对比,第一个参数是一个函数,它接受一个与模型相同类型的参数。
答案 1 :(得分:0)
遇到相同的错误。
就我而言,我做了一些搜索和替换,却忘记了更改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 " })