在这里感到困惑。只想在构造函数中使用示例数据来显示一个字段,然后循环遍历一条记录:
public class MikesViewModel
{
public MikesClass MikesClass { get; set; }
public List<MikesClass> MikesClassList { get; set; }
}
public ActionResult MikesView()
{
var viewClassModel = new MikesViewModel();
viewClassModel.MikesClass = new MikesClass();
viewClassModel.MikesClassList = new List<MikesClass> { new MikesClass() {} };
return View(viewClassModel);
}
查看问题:如果我取出foreach
@Html.DropDownListFor
将不起作用:
@using AAA.Models
@model MikesViewModel
@Html.EditorFor(Model => Model.MikesClass.Name)
@using (Html.BeginForm())
{
@Html.DropDownListFor(model => model.MikesClass.Id,
new SelectList(Model.MikesClassList, "Id", "Name"))
}
**** This foreach won't work if I take out the ^ above line ** :**
@foreach (var item in Model.MikesClassList)
{
@item.Name
}
奇怪的是,如果我拿出:
@Html.DropDownListFor(model => model.MikesClass.Id, new SelectList(Model.MikesClassList, "Id", "Name"))
@foreach (var item in Model.MikesClassList)
不起作用并提供错误:
'Model' conflicts with the declaration 'System.Web.Mvc.WebViewPage<TModel>.Model'
我怎样才能让foreach工作?不理解这一点。
答案 0 :(得分:1)
不要在视图中调用“模型”或“模型”。这可能会让视图引擎感到困惑。像这样的行,例如:
@Html.EditorFor(Model => Model.MikesClass.Name)
您在EditorFor
中声明了一个名为Model
的变量,但视图引擎中已有一个名为Model
的内置变量。当你取消引用Model.MikesClass
时你指的是哪一个?你在这里有另一个叫model
的人:
@Html.DropDownListFor(model => model.MikesClass.Id, new SelectList(Model.MikesClassList, "Id", "Name"))
虽然Model
和model
不是C#中的保留字,但最好在视图中将它们视为“保留”。基本上,最好为变量使用有意义的名称,而不是过于通用的名称。
foreach
工作正常,但该视图中的其他行已经混淆了引擎,当它到达foreach
时它不知道该怎么做。