2013-09-27 4 views
5

पर पैरामीटर जोड़ने के लिए कैसे मैं जानना चाहता हूं कि एचटीएमएल हेल्पर को @Html.TextBoxFor(model => model.signature) जैसे data-id पैरामीटर को हेलपर द्वारा नीचे दिए गए इनपुट में पैरामीटर कैसे लिखना है।रेज़र हेल्पर्स

<input type="text" name="signature" data-id="No Signature" /> 

नोट 1: dataId तरह पैरामीटर htmlAttributes द्वारा काम है क्योंकि यह एक सरल चर रहा है है।

नोट 2: मैं विस्तारित विधि और उपयोग विशेषता @{var attributes = new Dictionary<string, object>{{ "data-id", "No Signature" }};}

की तरह मुझे लगता है कि वहाँ इस को हल करने के लिए एक बेहतर तरीका होना चाहिए पता है। कोई उपाय...?

बहुत बहुत धन्यवाद।

+0

सिर्फ डेटा-आईडी पैरामीटर के साथ अपना खुद का विस्तार विधि लिखना और फिर बस यह अपने आप को संभाल ... –

+0

यहाँ देख http://stackoverflow.com/questions/6202053/asp-net-mvc-extending-textboxfor-re-writing-the-method –

+0

'डेटा' विशेषताओं को पार करने के लिए,' _' के बजाय '_' अंडरस्कोर का उपयोग करें कृपया stackoverflow.com/questions/4108943/actionlink- आपकी टिप्पणी के लिए htmlattributes –

उत्तर

1

आप बना सकते हैं अपने खुद के custom helpers की तरह:

public static class TextBoxExtensions 
    { 
      public static string CustomTextBox(this HtmlHelper helper, string name) 
      { 
       return String.Format("<input type='text' name={0} data-id='No Signature'></input>", name); 
      } 
    } 

फिर अपने दृश्य में आप कर सकते हैं:

@Html.TextBoxFor(model => model.signature, new { data_id = "No signature" }) 

आप:

@Html.CustomTextBox("signature"); 
+0

tnx लेकिन मुझे पता है - मैंने इसे नोट 2 – ehsan

+0

@ehsan में लिखा - आपका नोट दो कस्टम सहायक नहीं है। मेरा जवाब आपको दिखाता है कि कैसे एक –

+0

नोट 2 को हल करने के लिए 2 तरीके दिखाए जाते हैं। 1- विस्तार विधियां (या कस्टम सहायक बनाने वाले) 2- रेजर व्यू में विशेषताओं। – ehsan

4

आप data- गुण इस तरह से जोड़ सकते हैं डैश के चरण में अंडरस्कोर (_) का उपयोग करना होगा (-)।

सुझाव: यह भी अपने data- विशेषताओं में Model चर का उपयोग करना संभव है:

new { data_id = Model.Id } 
-2

कोड नीचे TextBoxFor बढ़ा कर एक CustomTextBoxFor सहायक पैदा करेगा। यह आपको एमवीसी के सत्यापन सम्मेलनों का पूरा लाभ लेने के साथ-साथ htmlAttributes पैरामीटर को खोलने की अनुमति देता है ताकि आवश्यकतानुसार अधिक विशेषताओं को जोड़ा जा सके।

 public static MvcHtmlString CustomTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, 
      Expression<Func<TModel, TProperty>> expression, string customData) 
     { 
      return htmlHelper.CustomTextBoxFor(expression, customData, (IDictionary<string, object>)null); 
     } 

     public static MvcHtmlString CustomTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, 
      Expression<Func<TModel, TProperty>> expression, string customData, object htmlAttributes) 
     { 
      IDictionary<string, object> attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); 
      attributes.Add("data-custom", customData); 
      return htmlHelper.TextBoxFor(expression, new { data_custom = "customData" }); 
     } 

उपयोग:

@Html.CustomTextBoxFor(model => model.MyProperty, Model.CustomData) 
@Html.CustomTextBoxFor(model => model.MyProperty, Model.CustomData, new { @class="pretty"})  
संबंधित मुद्दे