Creating an object.cshtml editor template with MVC and Razor

后端 未结 2 1515
不知归路
不知归路 2021-02-20 00:46

I am looking to create an editor template for Object.cshtml to change the behavior of the Html.EditorForModel() method. I can\'t find any example of this using Razor. I have see

相关标签:
2条回答
  • 2021-02-20 01:18

    I'm just going to do the Display template and leave the rest as an exercise for the reader:)

    @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>
    }
    
    0 讨论(0)
  • 2021-02-20 01:20

    This seem to work for Editor Template for bootstrap, please let me know of any improvements

    Object.cshtml

    @if (Model == null)
    {
        <text>@ViewData.ModelMetadata.NullDisplayText</text>
    }
    else if (ViewData.TemplateInfo.TemplateDepth > 1)
    {
        <text>@ViewData.ModelMetadata.SimpleDisplayText</text>
    }
    else
    {
        foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm)))
        {
            if (prop.HideSurroundingHtml)
            {
                <text>@Html.Editor(prop.PropertyName)</text>
            }
            else
            {
                <div class="form-group">
                    @Html.Label(prop.PropertyName, new { @class = "control-label col-md-2", @style = "text-align:right;" })
                    <div class="col-md-10">
                        @Html.Editor(prop.PropertyName, null, new { @class = "form-control " })
                        @Html.ValidationMessage(prop.PropertyName, "", new { @class = "text-danger" })
                    </div>
                </div>
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题