MVCとRazorを使用してObject.cshtmlエディターテンプレートを作成します
-
26-09-2019 - |
質問
object.cshtmlのエディターテンプレートを作成して、html.editorformodel()メソッドの動作を変更します。かみそりを使用してこれの例が見つかりません。私は見た この例 MVC2とWebform View Engineを使用していますが、それを変換するのにかみそりについて十分に知りません。簡単な例でさえ非常に役立ちます。
解決
ディスプレイテンプレートを実行し、残りを読者のためのエクササイズとして残すつもりです:)
@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>
}
他のヒント
これは機能しているようです エディターテンプレート ブートストラップについては、改善を教えてください
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>
}
}
}
所属していません StackOverflow