Поскольку комментарии 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 })