ビューモデルの[Display(Prompt = "This is the placeholder")]
属性から入力プレースホルダを取得するように組み込みのasp-for
タグヘルパを設定することはできますか。 MVC 5ではASP.NETコア1.0のViewModelメタデータからプレースホルダを入力
[Display(Name="Name", Prompt = "This is the placeholder")]
public string Name { get; set; }
私は、エディタのテンプレートに追加のロジックを追加し、ViewData.ModelMetadata.Watermark
プロパティをチェックすることによって、これを達成することができています。例:
@model string
@{
Dictionary<string, object> htmlAttributes = new Dictionary<string, object>();
htmlAttributes.Add("class", "form-control");
if (!string.IsNullOrWhiteSpace(ViewData.ModelMetadata.Watermark))
{
htmlAttributes.Add("placeholder", ViewData.ModelMetadata.Watermark);
}
}
@Html.Label("")
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, htmlAttributes)
@Html.ValidationMessage("", "", new { @class = "text-danger" })
しかし、今度はASP.NET Core 1.0で、新しいタグヘルパーアプローチの使用を開始したいと思います。既定では、asp-for
ヘルパーのビルドでは、単にPrompt
という属性値が無視されます。例えば、asp-for
属性の私自身のカスタム実装を持つ
my-asp-for
はオプションであり、保守性と追加ロジックの再利用のために、おそらく私はそれを持っています。 しかし、その後Watermark
プロパティはもはや存在ModelMetadata
であるが、すなわちFor.Metadata.Watermark
ようなものはありません。
asp-for
ヘルパーでPrompt
という値が表示されている唯一の場所は多少隠されています。
だから私は2つの質問があります。 これを行うにはスマートな方法がありますか? つまり、私は明示的にかみそりファイルにそれにそれを指定する必要があり、のviewmodelのメタデータからプレースホルダを取るために悪い習慣ですか?
あまりにも私のために動作します。ありがとう! – Plebsori
'