2011-07-07 8 views
20

मैं टेक्स्ट क्षेत्र नियंत्रण के लिए अपना पहला कस्टम संपादक टेम्पलेट बना रहा हूं। मेरे कोड अब तक है -कस्टम संपादक टेम्पलेट में मॉडल का फ़ील्ड नाम कैसे प्राप्त करें

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> 
<%= Html.TextAreaFor(Model => Model , 2, 30, 
    new { @class = "html", @placeholder = ViewData.ModelMetadata.Watermark }) %> 

यह बहुत अब तक नहीं है, लेकिन यह काम करता है। लेकिन उपयोगकर्ता को टाइप करने वाले अक्षरों की शेष संख्या दिखाने के लिए हमें एक चरित्र काउंटर फ़ील्ड जोड़ने की आवश्यकता है। मुझे पता है कि यह काम करने के लिए सभी जावास्क्रिप्ट कैसे करें।

तो नामकरण प्रणाली को समान रखने के लिए, मैं बाईं ओर शेष वर्णों की संख्या प्रदर्शित करने के लिए ".charCounter" नामक एक नियंत्रण जोड़ने जा रहा हूं। मेरी समस्या यह है कि मैं मॉडल के लिए फ़ील्ड नाम पुनर्प्राप्त करने में सक्षम होने के लिए सही वाक्यविन्यास नहीं समझ सकता। MVC3 में

<input 
    readonly="readonly" 
    type="text" 
    name="<%= ViewData.TemplateInfo.HtmlFieldPrefix %>.charCounter" 
/> 

उत्तर

29

आप ViewData.TemplateInfo.HtmlFieldPrefix इस्तेमाल कर सकते हैं, इस तरह -

अंतिम संस्करण की तरह (जावास्क्रिप्ट छोड़े गए) कुछ दिखेगा।

उस्तरा में:

<input readonly="readonly" type="text" name="@ViewData.ModelMetadata.PropertyName"> 
+0

क्या वर्ग के नाम के बारे में ??? – ConductedClever

2

ViewData.ModelMetadata.PropertyName काम करता है अच्छी तरह से:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> 
<%= Html.TextAreaFor(Model => Model , 2, 30, 
    new { @class = "html", @placeholder = ViewData.ModelMetadata.Watermark }) %> 
<span class="xxx">Remaining characters - 
    <input readonly type="text" name="<fieldName>.charCounter" /> 
</span> 
15

मैं एक मुद्दा जहां PropertyName मॉडल उपसर्ग जैसे Contact.FirstName वापस नहीं किया गया था में भाग गया।

@ViewData.TemplateInfo.GetFullHtmlFieldId("") 

रिटर्न:

@ViewData.TemplateInfo.GetFullHtmlFieldName("") 

रिटर्न: Contact_FirstName

क्रमशः आप फ़ील्ड नाम का उपयोग करते हुए लौट सकते हैं मैं इसे इस का उपयोग करके HTML क्षेत्र क्रमांक वापसी करने में सक्षम था:

संपर्क। फर्स्टनाम

0

बस मॉडल का नाम/ईद हो रही है (उदाहरण के लिए जन्मतिथि):

name="@Html.NameFor(m => Model)" 
:

name = ViewData.ModelMetadata.PropertyName; 

जटिल वस्तुओं के लिए उपसर्ग (जैसे Identity.Person.BirthDate) के साथ मॉडल का नाम हो रही है

या

name = ViewData.TemplateInfo.HtmlFieldPrefix; 

(उदाहरण, Identity_Person_BirthDate) जटिल वस्तुओं के लिए उपसर्गों के साथ मॉडल ईद हो रही है:

@Html.IdFor(m => Model) 

या

@Html.IdForModel() 
संबंधित मुद्दे