2012-05-08 9 views
5

मुझे आशा है कि यह सिर्फ एक बग है लेकिन यह अनुमान लगाया गया है कि यह सिर्फ मुझे था।एमवीसी 4 एक्शनलिंक शब्दकोश htmlAttributes काम नहीं करता

@Html.ActionLink("Test", "Test", "Test", 
    new { id = 1 }, 
    new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } }) 

यह काम करता है लेकिन अगर मैं और विशेषताओं को जोड़ना चाहता हूं तो मुझे इसे मैन्युअल रूप से करना होगा!

@Html.ActionLink("Test", "Test", "Test", 
    new { id = 1 }, 
    new { @class="ui-btn-test", data_icon="gear", data_new_attr="someextra" }) 

पहला काम नहीं करता है और मुझे इसे काम करने की आवश्यकता है। दूसरा काम करता है लेकिन यह परवाह नहीं करता है कि यह करता है, क्योंकि मैं और अधिक विशेषताओं को जोड़ने की कोशिश कर रहा हूं, ऑब्जेक्ट अलग-अलग बताए बिना काम नहीं करेगा।

+0

सवाल क्या है? दूसरा तरीका 'htmlAttributes' निर्दिष्ट करने का पसंदीदा तरीका है। –

+0

एमवीसी 4 में पहला मेरा पसंदीदा तरीका सही तरीके से काम नहीं करता है। मुझे कुछ इस तरह के गुणों के रूप में मिलता है। Home

+0

आप इसे पहली बार क्यों करना चाहते हैं। दूसरा तरीका काम करता है, अभ्यास स्वीकार किया जाता है, और पढ़ने के लिए आसान है। –

उत्तर

8

प्रदत्त ActionLink सहायक विधियों में से कोई भी पैरामीटर स्वीकार नहीं करता है जैसे आप निर्दिष्ट कर रहे हैं। HTML गुणों के लिए टाइप IDictionary का पैरामीटर लेने वाले एकमात्र लोग रूट मानों के लिए रूटवेल्यू डिक्शनरी की अपेक्षा करते हैं। यह है के रूप में, यदि आप वर्तमान में कॉल कर रहे हैं एक समारोह है कि एक गुमनाम वस्तु

के रूप में अपने शब्दकोश इलाज है

@Html.ActionLink("Test", "Tesz", "Test", 
new RouteValueDictionary(new {id = 1}), 
new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } }) 

प्रयास करें या अपनी स्वयं की विस्तार विधि को लागू।

+0

यह बहुत अच्छा काम किया! मैं अपनी खुद की विस्तार विधि को लागू करने वाला था, लेकिन मेरे सभी एक्शन लिंक को फिर से लिखना नहीं चाहता था। –

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