डारिन दिमित्रोव के जवाब में स्मार्ब्स की टिप्पणी, Prompt
इस उद्देश्य के लिए मौजूद है, इसलिए कस्टम विशेषता बनाने की कोई आवश्यकता नहीं है । प्रलेखन से:
यूआई में संकेतों के लिए वॉटरमार्क सेट करने के लिए उपयोग किया जाने वाला मान हो जाता है या सेट किया जाता है।
इसका उपयोग करने के लिए, बस अपने विचार मॉडल की संपत्ति को इस तरह से सजाएं:
[Display(Prompt = "numbers only")]
public int Age { get; set; }
इस पाठ को तब आसानी से रखा गया है ModelMetadata.Watermark
। बॉक्स से बाहर, MVC 3 में डिफ़ॉल्ट टेम्पलेट Watermark
संपत्ति की उपेक्षा करता है, लेकिन इसे काम करना वास्तव में सरल है। MVC को इसे कैसे प्रस्तुत करना है, यह बताने के लिए आपको बस डिफ़ॉल्ट स्ट्रिंग टेम्पलेट को ट्विक करना होगा। बस String.cshtml संपादित करें, जैसे डारिन करता है, सिवाय इसके कि वॉटरमार्क प्राप्त करने के बजाय ModelMetadata.AdditionalValues
, आप इसे सीधे से प्राप्त करते हैं ModelMetadata.Watermark
:
~ / दृश्य / साझा / EditorTemplates / String.cshtml:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
और वह यह है।
जैसा कि आप देख सकते हैं, सब कुछ बनाने की कुंजी placeholder = ViewData.ModelMetadata.Watermark
बिट है।
यदि आप मल्टी-लाइन टेक्स्टबॉक्स (टेक्स्टारस) के लिए वॉटरमार्किंग को सक्षम करना चाहते हैं, तो आप मल्टीलाइनटेक्स्ट.कैशटीएमएल के लिए भी ऐसा ही करें:
~ / दृश्य / साझा / EditorTemplates / MultilineText.cshtml:
@Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue.ToString(), 0, 0, new { @class = "text-box multi-line", placeholder = ViewData.ModelMetadata.Watermark })