我希望为 Object.cshtml 创建一个编辑器模板来更改 Html.EditorForModel() 方法的行为。我找不到任何使用 Razor 的例子。我已经看到 this example 使用 MVC2 和 WebForm View 引擎,但对 razor 的转换了解不够。即使是一个简单的例子也会非常有帮助。

最佳答案

我只会做显示模板,剩下的留给读者练习:)

@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>
}

关于asp.net-mvc - 使用 MVC 和 Razor 创建 object.cshtml 编辑器模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4029402/

10-15 05:06