मैं MVC के HTML हेल्पर्स द्वारा उत्पन्न HTML तत्व में एक वर्ग विशेषता कैसे जोड़ सकता हूं?


188

ASP.NET MVC HTML सहायकों का उपयोग करके HTML तत्व उत्पन्न कर सकता है, उदाहरण के लिए @Html.ActionLink(), @Html.BeginForm()और इसी तरह।

मुझे पता है कि मैं एक अनाम ऑब्जेक्ट बनाकर प्रपत्र विशेषताएँ निर्दिष्ट कर सकता हूं और उस ऑब्जेक्ट के लिए (इस मामले में चौथा) htmlAttributesपैरामीटर पास कर सकता हूं जहां idतत्व के लिए निर्दिष्ट कर रहा हूं :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})

लेकिन classविशेषता के बारे में क्या ? जाहिर है कि यह काम नहीं करता है:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})

जैसा कि मेरे विचार का अनुरोध करने पर बस यादृच्छिक सिंटैक्स त्रुटियों को फेंकता है, क्योंकि यह C # कीवर्ड का सामना करने के बाद कुछ और की अपेक्षा करता है class

मैंने भी कोशिश की है:

new { _class = "myclass"}

तथा

new { class_ = "myclass"}

लेकिन वे भी काम नहीं करते थे, क्योंकि अंडरस्कोर को डैश के द्वारा बदल दिया जाता था

मुझे पता है कि मैं बस HTML तत्वों को हाथ से लिख सकता हूं या फॉर्म को एक के अंदर लपेट <div class="myClass">सकता हूं, लेकिन मुझे यह जानने में दिलचस्पी होगी कि यह कैसे किया जाना चाहिए।

जवाबों:


348

किसी ऐसी संपत्ति के साथ एक गुमनाम प्रकार (या किसी भी प्रकार) बनाने के लिए जिसके पास C # में अपने नाम के रूप में एक आरक्षित कीवर्ड है , आप साइन इन के साथ संपत्ति का नाम प्रीपेंड कर सकते हैं @:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})

VB.NET के लिए यह सिंटैक्स डॉट का उपयोग करके पूरा किया जाएगा. , जो उस भाषा में सभी अनाम प्रकारों के लिए डिफ़ॉल्ट सिंटैक्स है :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })

पार्सर पर्याप्त स्मार्ट नहीं है, IMO, अगर यह आवश्यक है कि संकेत दिए गए संदर्भ को कोड में उस बिंदु पर दिया जाए।
18 दिसंबर को टोडरमो

3

CSS विकास में वर्तमान सबसे अच्छा अभ्यास संशोधक के साथ अधिक सामान्य चयनकर्ता बनाना है जो पूरे वेब साइट पर यथासंभव व्यापक रूप से लागू किया जा सकता है। मैं व्यक्तिगत पेज तत्वों के लिए अलग-अलग शैलियों को परिभाषित करने से बचने की कोशिश करूंगा।

यदि <form/>तत्व पर CSS वर्ग का उद्देश्य फॉर्म के भीतर तत्वों की शैली को नियंत्रित करना है, तो आप मौजूदा विशेषता को वर्ग जोड़ सकते हैं <fieldset/>जो ASP.NET MVC द्वारा उत्पन्न वेब पृष्ठों में डिफ़ॉल्ट रूप से किसी भी रूप को एन्क्रिप्ट करता है। प्रपत्र पर एक सीएसएस वर्ग शायद ही कभी आवश्यक है।


4
आप निश्चित रूप से सही हैं, हालांकि यह मामला अलग है। मैं कुछ जेकरी प्लगइन्स के लिए मेटाडेटा निर्दिष्ट करने का एक तरीका ढूंढ रहा था। यह आमतौर पर वर्ग विशेषता का दुरुपयोग करके किया जाता है।
एड्रियन ग्रिगोर

13
आप सर्वोत्तम प्रथाओं का सुझाव दे सकते हैं, लेकिन अगर मेरे पास कोई टेम्पलेट है जो किसी प्रपत्र पर सीएसएस का उपयोग करता है, तो मैं इसे "सही" बनाने के लिए कसाई को जाने वाला नहीं हूं। वास्तविकता यह है कि एक ग्राहक अधिक भुगतान करने वाला नहीं है क्योंकि आपने सीएसएस द्वारा सही काम किया है ...
क्रिश्चियन पायने

1
@ChristianPayne वे भविष्य में अधिक भुगतान करने के लिए मजबूर हो सकते हैं क्योंकि आपने नहीं किया।
इयान वारबर्टन

1
मैंने इस प्रतिक्रिया को वोट दिया क्योंकि यह सवाल का जवाब नहीं देता है। अधिक उपयुक्त उत्तर पहले प्रश्न का उत्तर देगा और फिर सर्वोत्तम अभ्यास मार्गदर्शन देगा।
बेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.