c# - संपत्ति के लिए ग्राहक आईडी(एएसपी.नेट एमवीसी)




asp.net-mvc razor (4)

मैं एएसपीएनटी एमवीसी में एक भिखारी हूं, और मुझे संदेह है:

मैं अपने व्यू में टेक्स्टबॉक्स के लिए एक लेबल करने की कोशिश कर रहा हूं और मैं जानना चाहता हूं, मैं एक आईडी कैसे ले सकता हूं जो क्लाइंट में जेनेरेट स्क्रिप्ट्स में प्रस्तुत किया जाएगा ... उदाहरण के लिए:

<label for="<%=x.Name.ClientId%>"> Name: </label>
<%=Html.TextBoxFor(x=>x.Name) %>

"क्लाइंट आईडी" में मुझे क्या सुनिश्चित करने की आवश्यकता है कि यह सुनिश्चित करने के लिए कि सही आईडी इसी नियंत्रण में प्रस्तुत की जाएगी?

धन्यवाद

चियर्स


इस कोड को कहीं भी रखें:

using System; 
using System.Linq.Expressions; 
using System.Web.Mvc; 

namespace MvcLibrary.Extensions 
{ 
    public static class HtmlExtensions 
    { 
        public static MvcHtmlString FieldIdFor<TModel, TValue>(this HtmlHelper<TModel> html,
            Expression<Func<TModel, TValue>> expression) 
        { 
            string htmlFieldName = ExpressionHelper.GetExpressionText(expression); 
            string inputFieldId = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName); 
            return MvcHtmlString.Create(inputFieldId); 
        } 
    } 
}

फिर आपके एएसपीएक्स दृश्य में:

<label for="<%= Html.FieldIdFor(m => m.EmailAddress) %>">E-mail address:</label> 
<%= Html.TextBoxFor(m => m.EmailAddress) %>

आप जावास्क्रिप्ट कॉल में इसका भी उपयोग कर सकते हैं क्योंकि आप पहले से ही नियंत्रण आईडी को नहीं जानते हैं और इसके लिए कुछ जावास्क्रिप्ट कोड के लिए काम करने की आवश्यकता हो सकती है:

<script> $.CoolJQueryFunction('<%= Html.FieldIdFor(m => m.EmailAddress) %>'); </script>

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

किसी के ब्लॉग पोस्ट के लिंक पोस्ट करने के नियमों के बारे में निश्चित नहीं है, लेकिन मैंने इस सटीक विषय पर एक ब्लॉग पोस्ट किया: http://www.dominicpettifer.co.uk/Blog/37/strongly-typed--label--elements-in-asp-net-mvc-2


एमवीसी 4 ने इसे अभी बनाया है .. इसे देखें


निम्न का उपयोग करें:

Model.Name

आप बस "स्रोत देखें" कर सकते हैं या Html.xyzFor() विधियां उत्पन्न कर रहे हैं यह देखने के लिए फ़ायरबग जैसे कुछ के साथ प्रस्तुत टेक्स्टबॉक्स की जांच कर सकते हैं। आम तौर पर वे संपत्ति आईडी पर सेट "आईडी" और "नाम" विशेषताओं के साथ एक टेक्स्टबॉक्स उत्पन्न करेंगे।


यह मजेदार है कि एमवीसी के मुक्त स्रोत कोड पर क्या पाया जा सकता है। यहां जवाब है:

@ Html.IdFor या @ HTML.NameFor

तो अंतर क्या है? यहां पकड़ है:

NameFor किसी भी "।" को प्रतिस्थापित नहीं करेगा सेवा मेरे "_"।

यदि आप कोई उदाहरण चाहते हैं, तो मुझे यह अच्छा छोटा लेख मिला है





clientid