使用MVC和Razor创建object.cshtml编辑器模板

Cra*_*aig 12 asp.net-mvc razor

我想为Object.cshtml创建一个编辑器模板来改变Html.EditorForModel()方法的行为.我用Razor找不到任何这样的例子.我已经看过这个使用MVC2和WebForm视图引擎的例子,但对razor的转换知之甚少.即使是一个简单的例子也会非常有用.

mar*_*ind 21

我只是要做显示模板,剩下的作为读者的练习:)

@if (Model == null) {
    <text>@ViewData.ModelMetadata.NullDisplayText</text>
} else if (ViewData.TemplateInfo.TemplateDepth > 1) {
    <text>@ViewData.ModelMetadata.SimpleDisplayText</text>
} else {
    <table cellpadding="0" cellspacing="0" border="0">
    @foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm))) {
        if (prop.HideSurroundingHtml) {
            <text>@Html.Display(prop.PropertyName)</text>
        } else {
            <tr>
                <td>
                    <div class="display-label" style="text-align: right;">
                        @prop.GetDisplayName()
                    </div>
                </td>
                <td>
                    <div class="display-field">
                        @Html.Display(prop.PropertyName)
                    </div>
                </td>
            </tr>
        }
    }
    </table>
}
Run Code Online (Sandbox Code Playgroud)

  • +1(除了使用表格进行表格布局.);-) (3认同)
  • Doh,你的代码是正确的.我不小心有#Html.EditorForModel()而不是@ Html.EditorForModel().至少你的代码不会浪费,并且将来会被许多新的Razor用户首次看到. (2认同)