DropDownListFor生成'名称'模型'在当前上下文中不存在'错误

时间:2011-04-09 23:27:11

标签: asp.net-mvc-3 drop-down-menu razor

刚开始使用MVC3并尝试在视图中构建下拉列表时遇到问题。 ViewModel填充了项目的SelectList:

mdm.CaptionSetList=new SelectList(CaptionSet.Fetch(), "CaptionSetId", "Description")

然后在视图中使用:

@Html.DropDownListFor(model => model.Entity.CaptionSetId, model.CaptionSetList) 

但是当页面被点击时,该行会突出显示编译器消息:

  

编译器错误消息:CS0103:当前上下文中不存在名称“model”

我正在制作的初学者错误是什么?

2 个答案:

答案 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 " })