4 Stimmen

EditorForModel - Doppelte Beschriftungen bei Verwendung von editorfor

Ich verwende eine Reihe von Editorvorlagen für verschiedene Datentypen (String, DateTime, etc.) in meiner ASP.NET MVC-Anwendung. Die folgende Vorlage verwende ich zum Beispiel für Strings:

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

Ich möchte EditorForModel innerhalb meiner Ansichten verwenden, aber wenn ich dies tue, scheint es seine eigene Bezeichnung für jede Eigenschaft hinzuzufügen, was zu doppelten Bezeichnungen führt (weil ich eine Bezeichnung in meinem String-Editor-Vorlage haben). Gibt es irgendeine Möglichkeit, andere als das Entfernen der Beschriftung aus meinem String-Editortemplate (in diesem Beispiel), die ich editorformodel sagen kann, nicht um eine Beschriftung einzufügen?

8voto

Darin Dimitrov Punkte 990883

Eine Möglichkeit ist die Überschreibung der Standardobjekt-Editor-Vorlage ( ~/Views/Shared/EditorTemplates/Object.cshtml ) und entfernen Sie das hinzugefügte Etikett:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X