Création d'un modèle d'éditeur object.cshtml avec MVC et Razor
-
26-09-2019 - |
Question
Je cherche à créer un modèle d'éditeur pour Object.cshtml pour changer le comportement de la méthode Html.EditorForModel (). Je ne trouve aucun exemple de ce rasoir à l'aide. Je l'ai vu cet exemple utilisant MVC2 et moteur vue WebForm mais ne savent pas assez sur le rasoir pour le convertir. Même un exemple simple serait très utile.
La solution
Je vais juste faire le modèle d'affichage et laisser le reste comme un exercice pour le lecteur:)
@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>
}
Autres conseils
semblent travailler pour Template Editor pour bootstrap, s'il vous plaît laissez-moi savoir des améliorations
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>
}
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow