2010-05-24 11 views
92

वहाँ एक अच्छे वाक्य रचना जब हाइफन विशेषताओं के साथ तत्वों के बजाय बनाने का उपयोग कर है:बंटे एचटीएमएल asp.net MVC के साथ जिम्मेदार बताते हैं

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %> 

प्रस्तावित मानकों एचटीएमएल 5 और यह WIA ARIA के लिए HTML चश्मा को देखते हुए ऐसा लगता है कि एचटीएमएल विशेषताओं में हाइफ़न को सामान्य नाम अंतर के रूप में अधिक आम होने की योजना बनाई जा रही है।

उदा। एचटीएमएल 5 का प्रस्ताव है कि कस्टम गुण data- के साथ प्रीफ़िक्स किए गए हैं और डब्ल्यूआईए एआरआईए सभी डब्ल्यूआईए एरिया विशेषताओं के लिए aria- उपसर्ग का उपयोग करता है।

एएसपी.नेट एमवीसी जैसे एचटीएमएल हेल्पर्स का उपयोग करते समय <%= Html.TextBox("name", value, new { attribute = attributeValue }) %> अनाम वस्तु को एक शब्दकोश में परिवर्तित कर दिया जाता है।

दुर्भाग्य से सी # में नामों में हाइफ़न के लिए कोई समर्थन नहीं है, इसलिए एकमात्र विकल्प एक शब्दकोश बनाना है। सिंटैक्स जिसके लिए बहुत वर्बोज़ है, क्या किसी ने पूरे एक्सटेंशन को दोबारा लिखने के बिना एएसपी.नेट एमवीसी के एचटीएमएल एक्सटेंशन की कार्यक्षमता को बदलने का एक अच्छा विकल्प या सरल तरीका देखा है?

उत्तर

167

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

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %> 
+6

+1 बस मुझे कुछ सचमुच बदसूरत कोड लिखने से बचाया। धन्यवाद! –

+2

मुझे कई SO प्रश्नों के समान समस्या मिली, और यह सबसे अच्छा जवाब है। – user2780436

+0

क्या आप अपने कथन का कारण जोड़ सकते हैं ** अंडरस्कोर HTML विशेषताएँ में मान्य नहीं हैं **। कम से कम [एचटीएमएल 4.01 राज्य] (http://www.w3.org/TR/html401/intro/sgmltut.html#didx-attribute): _ विशेषता मान में केवल अक्षर (एज़ और एजेड) हो सकते हैं, अंक (0- 9), हाइफ़ेंस (एएससीआईआई दशमलव 45), अवधि (एएससीआईआई दशमलव 46), अंडरस्कोर (एएससीआईआई दशमलव 95), और कोलन (एएससीआईआई दशमलव 58) _, – surfmuggle

17

ActionLink htmlAttributes पर प्रदान किया गया उत्तर हाइफ़न के बजाय अंडरस्कोर का उपयोग करने का सुझाव देता है। ब्राउजर को पेज भेजते समय एमवीसी.Net अंडरस्कोर के बजाय हाइफ़न उत्सर्जित करना होता है।

+0

यह मेरे लिए काम करता है। –

संबंधित मुद्दे