MVC:无法使编辑器模板的语法正常工作

时间:2010-12-07 10:32:46

标签: asp.net-mvc

我有一个强类型视图,第一行是;

<%@ 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是错误的,可能有更好的表达方式。

1 个答案:

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