我有一个代表要在餐厅订购的食物的对象。该对象有一个修饰符组列表(面、烹饪说明、披萨配料等),每个列表都有一个修饰符列表。
某些修饰符选项需要以不同方式显示(例如,浇头需要指定左/右/全部),即使它们是相同的数据类型。
我正在尝试使用 @Html.EditorFor 并在需要时指定备用 EditorTemplate。
在 /Views/Shared/EditorTemplates 我有 ModifierSelection.cshtml 和 ToppingSelection.cshtml。我在以下视图中调用它们:
@model MyApp.ViewModels.ModifierSelectionList
<div class="menugroup">
<h3 class="menuname">@Model.ModifierListName: (Select @Model.MaximumSelections)</h3>
<div class="modcountvalidation">@Model.ValidationResults</div>
@Html.HiddenFor(model => Model.ModifierListId)
<table class="menu">
@if (Model.IsToppingsList)
{
@Html.EditorFor(model => Model.ModifierSelections, "ToppingSelection")
}
else
{
@Html.EditorFor(model => Model.ModifierSelections)
}
</table>
</div>
当我尝试显示需要“ToppingSelection”EditorTemplate 而不是默认值的项目时,我收到以下错误:
System.InvalidOperationException was unhandled by user code
Message=The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[MyApp.ViewModels.ModifierSelection]', but this dictionary requires a model item of type 'MyApp.ViewModels.ModifierSelection'.
Source=System.Web.Mvc
所以 - 我有一组用于数据类型的 EditorTemplates。我正在尝试使用它们来显示项目列表,并且我需要能够选择要使用的项目。
我究竟做错了什么?
谢谢!