เป็นความคิดเห็น smnbss ในคำตอบของดารินทร์ดิมิทรอฟของPrompt
ที่มีอยู่สำหรับตรงจุดประสงค์นี้จึงมีความจำเป็นที่จะต้องสร้างแอตทริบิวต์ที่กำหนดเอง จากเอกสารประกอบ:
รับหรือกำหนดค่าที่จะใช้ในการตั้งค่าลายน้ำสำหรับพร้อมต์ใน UI
ในการใช้งานเพียงแค่ตกแต่งคุณสมบัติของโมเดลมุมมองของคุณดังนี้:
[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
จริง
หากคุณต้องการเปิดใช้งานการใส่ลายน้ำสำหรับกล่องข้อความหลายบรรทัด (textareas) ให้ทำเช่นเดียวกันสำหรับ 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 })