我有一个强类型视图,第一行是;
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Employee.Master"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<SHP.Models.AnnualLeaveBooked>>" %>
为避免Id碰撞,我想在网格中显示集合,因此我使用编辑器模板(其中一个字段被编辑)。 所以在我的代码中我加入了行;
<%: Html.EditorFor(x => x) %>
然后在我放入此模板的EditorTemplate子文件夹中;
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SHP.Models.AnnualLeaveBooked>" %>
<tr>
<td>
<%: String.Format("{0:g}", Model.AnnualLeaveDate) %>
</td>
<td>
<%: Model.ApprovedStatus %>
</td>
<td>
<%: Html.CheckBoxFor(model => model.CancelFlag) %>
<%: Html.HiddenFor(model => model.AnnualLeaveBookedId) %>
</td>
</tr>
我遇到的问题是EditorFor命令似乎无法识别EditorTemplate。 我究竟做错了什么? 如果x =&gt;我会很惊讶我会感到惊讶x是错误的,可能有更好的表达方式。
答案 0 :(得分:1)
您的编辑器模板应为:~/Views/Home/EditorTemplates/AnnualLeaveBooked.ascx
其中Home
是控制器的名称。如果它是全局编辑器模板,您也可以将其放在~/Views/Shared/EditorTemplates/AnnualLeaveBooked.ascx
中。请注意编辑器模板的名称:它应与您的类型名称相同( AnnualLeaveBooked.ascx
)。
而不是:
<%: Html.EditorFor(x => x) %>
你可以:
<%: Html.EditorForModel() %>
最后,如果您想使用~/Views/Home/EditorTemplates/Foo.ascx
之类的自定义名称命名编辑器模板,则可以指定此自定义名称:
<%: Html.EditorForModel("Foo") %>