Як smnbss коментує відповідь Даріна Димитрова, Prompt
існує саме для цієї мети, тому немає потреби створювати власний атрибут . З документації:
Отримує або встановлює значення, яке буде використано для встановлення водяного знаку для підказок в інтерфейсі користувача.
Щоб скористатися ним, просто прикрасьте властивість вашої моделі подання так:
[Display(Prompt = "numbers only")]
public int Age { get; set; }
Потім цей текст зручно розмістити в ModelMetadata.Watermark
. Звичайно шаблон за замовчуванням у MVC 3 ігнорує Watermark
властивість, але змусити його працювати дуже просто. Все, що вам потрібно зробити, це налаштувати шаблон рядка за замовчуванням, щоб сказати MVC, як його візуалізувати. Просто відредагуйте String.cshtml, як це робить Дарін, за винятком того, що замість отримання водяного знаку ModelMetadata.AdditionalValues
ви отримуєте його прямо з ModelMetadata.Watermark
:
~ / Views / Shared / EditorTemplates / String.cshtml:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
І це все.
Як бачите, ключовим фактором, щоб все працювало, є placeholder = ViewData.ModelMetadata.Watermark
біт.
Якщо ви також хочете увімкнути водяний знак для багаторядкових текстових полів (текстових областей), ви зробите те саме для 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 })