2017-04-30 6 views
1

Ich habe ein ASP.Net MVC-Projekt, an dem ich arbeite, und ich habe ein Modell, das ich in I Form verwandeln möchte. Ich möchte dafür EditorForModel() verwenden, weil ich möchte, dass Felder automatisch zum Formular hinzugefügt werden, wenn ich beschließe, später dem Modell Eigenschaften hinzuzufügen/zu entfernen.So entfernen Sie die Standardbezeichnung in EditorForModel

Das Problem, das ich habe, ist, dass Editor für Modell jede Eigenschaft nimmt und erstellt den folgenden HTML: (. Dies nur generisch ist nicht der eigentliche Code)

<div class="editor-label"><label>Label Title</label></div> 
<div class="editor-field"><input type="type"/></div 

jedoch, was ich will es für Sie tun dies jedes Feld ist:

<div class="editor-field"> 
    <label>Label Title</label> 
    <input type="type"/> 
</div> 

Aber wenn ich versuche, dies in einer Editor-Vorlage zu tun, bekomme ich diese statt:

<div class="editor-label"><label>Label Title</label></div> 
<div class="editor-field"> 
    <label>Label Title</label> 
    <input type="type"/> 
</div> 

Wie kann ich EditorForModel() bekommen, um nicht ein eigenes Beschriftungsfeld zu erstellen? Ich weiß, dass ich es immer so stilisieren könnte, wie es in CSS versteckt ist, aber es wäre schön, wenn es nicht einmal zu Beginn wäre, damit ich die Code-Verwirrung begrenzen könnte.

Vielen Dank im Voraus.

PS: Ich habe auch versucht mit [HiddenInput(DisplayValue = false)], aber das verbirgt nur das gesamte Feld und nicht nur das Etikett.

Antwort

1

Sie müssen dies in Ihrer Editor Vorlage cshtml zu schreiben, um es wie erwartet zu erhalten arbeiten:

@foreach (var property in ViewData.ModelMetadata.Properties) 
{ 
    <div class="editor-field"> 
     <label>@property.GetDisplayName()</label> 
     @Html.Editor(property.PropertyName) 
    </div> 
} 
+0

Ich habe dies in einem string.cshtml und es hat eine wirklich seltsame Sache, wo es dies mehrere Male lief pro String Eigentum. Muss es in eine eigene Modelleditorvorlage statt in eine Typeditorvorlage gehen? Zum Beispiel hat mein Modell 4 String-Eigenschaften und 2 Integer-Eigenschaften. geht dieser Code in eine ModelName.cshtml oder eine String.cshtml? –

+0

Wenn Sie ein bestimmtes Modell haben, dann erstellen Sie das Modell '[TypeName] .chstml' die Editor-Vorlage. Wenn es generisch ist, dann erstellen Sie die Vorlage "Object.cshtml" im selben Ordner. Aus Ihrer Sicht sollten Sie '@ Html.EditorForModel()' nur aufrufen, damit es funktioniert. – CodeNotFound

+0

Die Vorlage muss übrigens im EditorTemplates-Ordner sein. – CodeNotFound

Verwandte Themen