Darin Dimitrov'un cevabındaki smnbss yorumlarında Prompt
olduğu gibi, tam olarak bu amaç için mevcuttur, bu nedenle özel bir nitelik oluşturmaya gerek yoktur . Belgelerden:
Kullanıcı arabirimindeki istemler için filigranı ayarlamak için kullanılacak bir değer alır veya ayarlar.
Kullanmak için, görünüm modelinizin özelliğini şu şekilde dekore etmeniz yeterlidir:
[Display(Prompt = "numbers only")]
public int Age { get; set; }
Bu metin daha sonra uygun bir şekilde yerleştirilir ModelMetadata.Watermark
. Kutunun dışında, MVC 3'teki varsayılan şablon Watermark
özelliği yok sayar , ancak çalışmasını sağlamak gerçekten basittir. Tüm yapmanız gereken, MVC'ye onu nasıl işleyeceğini söylemek için varsayılan dize şablonunu ayarlamaktır. Darin'in yaptığı gibi String.cshtml dosyasını düzenleyin, tek fark filigranı ModelMetadata.AdditionalValues
almak yerine doğrudan şunlardan alırsınız ModelMetadata.Watermark
:
~ / Views / Shared / EditorTemplates / String.cshtml:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
Ve işte bu.
Gördüğünüz gibi, her şeyin çalışmasını sağlamanın anahtarı placeholder = ViewData.ModelMetadata.Watermark
birazdır.
Çok satırlı metin kutuları (metin alanları) için de filigran oluşturmayı etkinleştirmek istiyorsanız, MultilineText.cshtml için de aynısını yaparsınız:
~ / Views / Shared / EditorTemplates / MultilineText.cshtml:
@Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue.ToString(), 0, 0, new { @class = "text-box multi-line", placeholder = ViewData.ModelMetadata.Watermark })