Karena komentar smnbs dalam jawaban Darin Dimitrov, Prompt
tepat untuk tujuan ini, jadi tidak perlu membuat atribut khusus . Dari dokumentasi:
Mendapat atau menyetel nilai yang akan digunakan untuk menyetel tanda air untuk perintah di UI.
Untuk menggunakannya, cukup hiasi properti model tampilan Anda seperti ini:
[Display(Prompt = "numbers only")]
public int Age { get; set; }
Teks ini kemudian ditempatkan dengan nyaman ModelMetadata.Watermark
. Di luar kotak, template default di MVC 3 mengabaikan Watermark
properti, tetapi membuatnya bekerja sangat sederhana. Yang perlu Anda lakukan adalah mengubah template string default, untuk memberi tahu MVC cara merendernya. Cukup edit String.cshtml, seperti yang dilakukan Darin, kecuali bahwa alih-alih mendapatkan tanda air ModelMetadata.AdditionalValues
, Anda mendapatkannya langsung dariModelMetadata.Watermark
:
~ / Views / Shared / EditorTemplates / String.cshtml:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
Dan itu dia.
Seperti yang Anda lihat, kunci untuk membuat semuanya bekerja adalah placeholder = ViewData.ModelMetadata.Watermark
sedikit.
Jika Anda juga ingin mengaktifkan watermarking untuk kotak teks multi-baris (textareas), Anda melakukan hal yang sama untuk MultilineText.cshtml:
~ / Views / Shared / EditorTemplates / MultilineText.cshtml:
@Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue.ToString(), 0, 0, new { @class = "text-box multi-line", placeholder = ViewData.ModelMetadata.Watermark })