Comme le commentaire smnbss dans la réponse de Darin Dimitrov, Prompt
existe exactement dans ce but, il n'est donc pas nécessaire de créer un attribut personnalisé . De la documentation:
Obtient ou définit une valeur qui sera utilisée pour définir le filigrane des invites dans l'interface utilisateur.
Pour l'utiliser, décorez simplement la propriété de votre modèle de vue comme ceci:
[Display(Prompt = "numbers only")]
public int Age { get; set; }
Ce texte est ensuite commodément placé dans ModelMetadata.Watermark
. Hors de la boîte, le modèle par défaut dans MVC 3 ignore la Watermark
propriété, mais le faire fonctionner est vraiment simple. Tout ce que vous avez à faire est de peaufiner le modèle de chaîne par défaut pour indiquer à MVC comment le rendre. Modifiez simplement String.cshtml, comme le fait Darin, sauf que plutôt que d'obtenir le filigrane ModelMetadata.AdditionalValues
, vous l'obtenez directement à partir de ModelMetadata.Watermark
:
~ / Views / Shared / EditorTemplates / String.cshtml:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
Et c'est tout.
Comme vous pouvez le voir, la clé pour que tout fonctionne est le placeholder = ViewData.ModelMetadata.Watermark
bit.
Si vous souhaitez également activer le filigrane pour les zones de texte multilignes (zones de texte), procédez de la même manière pour 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 })