.net - ASP.NET MVC Html.ActionLink result URL - the way of encoding -


मैं एमवीसी नियंत्रकों में कई कार्यों का निर्माण करता हूं।

  सार्वजनिक कार्यवाही DoSmth1 (स्ट्रिंग टोकन ) सार्वजनिक लड़ाई रिजल्ट DoAnother2 (स्ट्रिंग टोकन)  

और जब मुझे ActionLink कॉल करना पड़ता है ..

  = HTML.ActionLink & lt; SomeController & gt; (x = & gt; X.DoSmth (item.property), item.property) = HTML.ActionLink & lt; अन्य नियंत्रक & gt; (x = & gt; x.दो अन्य (item.property), item.property)  

। ..यह मुझे अलग यूआरएल उत्पन्न करता है:

  / कुछ / दो एसएसएमथ / स्ट्रिंगव्यू / अन्य / डूएएनएआर? संपत्ति = स्ट्रिंगव्यू  

इसे किस तरह से बनाया जाता है सेट करने के लिए एक यूआरएल? मुझे कोई विचार नहीं है ... ((


ठीक है, कुछ रास्ता मिल गया: - यदि संपत्ति के नाम समान हैं जो रूटिंग स्कीमा में प्रयोग किया जाता है - जैसे नियंत्रक, क्रिया और आईडी - एमवीसी हमेशा रूट बिल्डर (/ c / a / id) का उपयोग करेगा।

यह थोड़ा (इतनी - संभव के रूप में पैरामीटर "id" नाम में मदद करता है ))

लेकिन समग्र समस्या अभी भी मान्य है ...


को रूट में टोकन के रूप में नामित किया जाना चाहिए

लेकिन - अब मेरे पास केवल डिफ़ॉल्ट मार्ग है ({नियंत्रक} / {action} / {id}) परन्तु अभी भी स्लैश में "प्रॉपर्टी" के साथ यूआरएल है ... यह बहुत ही अजीब है।

  • एक पैमाना मार्ग भी है - एक सटीक मार्ग बनाने के लिए जो उसके पास पैरामीटर नामों के साथ दिए गए नियंत्रक से मेल खाता है - है ऐसा लगता है कि अंतिम उत्तर होगा - लेकिन मैं अभी भी ऐसा नहीं करना चाहता ((

आप अपने मार्ग नहीं दिखाते हैं, लेकिन यो आप निश्चित रूप से इस उदाहरण में विभिन्न मार्गों को मार रहे हैं। आपकी कार्रवाई के तर्क को रूट में टोकन के रूप में नामित किया जाना चाहिए ताकि क्रांति किए गए यूआरएल को ActionLink के लैम्ब्डा फॉर्म के साथ रूट टोकन से मेल खाए। जो कोई भी रूटिंग टोकन से मेल नहीं खाता है उसे क्वेरी स्ट्रिंग पैरामीटर के रूप में जोड़ा जाएगा, जैसा कि आपके द्वितीय URL के साथ। क्वेरी स्ट्रिंग पैरामीटर को देखकर यह दृढ़ सबूत है कि जिस नाम से आप पारित हो गए (इस मामले में "संपत्ति") एक रूट टोकन से मेल नहीं खाती। चूंकि आपको एक ही टोकन नाम के साथ अलग-अलग परिणाम मिलते हैं, इसलिए मैंने निष्कर्ष निकाला है कि आप विभिन्न मार्गों को मार रहे हैं। संयोग से, मैं ऐक्शन लिंक के बजाय रूटलिंक के साथ लिंक का निर्माण करने की सलाह देता हूं, ताकि आप निश्चित हो सकें कि आप किस मार्ग का मिलान करेंगे।


Comments