4

ASP.NET MVC アプリケーションで、さまざまなデータ型 (文字列、DateTime など) 用に多数のエディター テンプレートを使用しています。たとえば、次は文字列に使用しているものです。

<div class="editor-label">
     @Html.Label("")
</div>
<div class="editor-field">
    @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text", placeholder = ViewData.ModelMetadata.Watermark })
    @Html.ValidationMessage("")
</div>

ビュー内で EditorForModel を使用したいのですが、そうすると、プロパティごとに独自のラベルが追加され、ラベルが重複するように見えます (文字列エディター テンプレートにラベルがあるため)。文字列 editortemplate (この例) からラベルを削除する以外に、editorformodel にラベルを挿入しないように指示できる方法はありますか?

4

1 に答える 1

8

1つの可能性は、デフォルトのオブジェクトエディタテンプレート( )を上書きし、~/Views/Shared/EditorTemplates/Object.cshtmlそれが追加するラベルを削除することです。

@if (ViewData.TemplateInfo.TemplateDepth > 1) 
{
    @ViewData.ModelMetadata.SimpleDisplayText
}
else 
{
    foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm))) 
    {
        if (prop.HideSurroundingHtml) 
        {
            @Html.Editor(prop.PropertyName)
        }
        else 
        {
            <div class="editor-field">
                @Html.Editor(prop.PropertyName)
                @Html.ValidationMessage(prop.PropertyName)
            </div>
        }
    }    
}
于 2012-08-16T17:33:40.690 に答える