Erstellen eines Object.cshtml -Editor -Vorlage mit MVC und Razor
-
26-09-2019 - |
Frage
Ich möchte eine Editor -Vorlage für Object.cshtml erstellen, um das Verhalten der Methode html.editorformodel () zu ändern. Ich kann kein Beispiel dafür mit Rasiermesser finden. Ich habe gesehen Dieses Beispiel Verwenden von MVC2 und Webform View Engine, wissen aber nicht genug über Rasiermesser, um es umzuwandeln. Auch ein einfaches Beispiel wäre sehr hilfreich.
Lösung
Ich werde nur die Anzeigevorlage machen und den Rest als Übung für den Leser lasse :)
@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>
}
Andere Tipps
Das scheint für zu funktionieren für Editor -Vorlage Bitte teilen Sie mir für Bootstrap alle Verbesserungen mit
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>
}
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow