2011-01-20 6 views
6

मेरे मार्ग में मैं कुछ इस तरह है:कार्रवाई पैरामीटर कैसे बदलें और इसे asp.net mvc में रूटिंग के बिना काम करने के लिए कैसे प्राप्त करें?

controller/action/{id} 

मेरी जानकारी के लिए इसका मतलब है तो वह ऐसा पैरामीटर आईडी के साथ किसी भी कार्रवाई कॉल करेगा:

public ActionResult Detail(string id) 
{ 
} 

क्या मैं करने के लिए मुझे क्या करना होगा - नियंत्रक/एक्शन/{CustomerID} या अभी

public ActionResult Detail(string customerId) 
{ 
} 
+0

तुम सिर्फ पैरामीटर का नाम बदलना चाहते हैं? या आप दो अलग-अलग कार्रवाइयां चाहते हैं? या ये दो कार्य विभिन्न नियंत्रकों में हैं? आप इन दो कार्यों को एक ही नियंत्रक में नहीं कर पाएंगे क्योंकि हस्ताक्षर समान हैं। – NerdFury

+0

बस पैरामीटर का नाम बदलें। मेरे पास "विस्तार" नामक एक ही कार्रवाई होगी। – johndoe

उत्तर

-2

तरह मार्ग है एक: में विशेष मार्ग Global.asax फ़ाइल निम्न काम करने के पंजीकरण किए बिना customerId से id पैरामीटर का नाम बदलें और फिर इसे जिस विशेष तरीके से आप चाहते हैं उसका उपयोग करें।

+0

हाँ मुझे पता है कि मैं ऐसा कर सकता हूं लेकिन वैश्विक.एक्सएक्स फ़ाइल स्तर की बजाय कार्रवाई स्तर पर ऐसा करने के लिए वैसे भी है। – johndoe

+0

अच्छी तरह से केवल कार्रवाई स्तर पर .. इसे ग्राहक आईडी से आईडी में बदलें और यह काम करेगा .. – Vishal

+0

हाँ! लेकिन मैं आईडी के बजाय इसे ग्राहक नाम देना चाहता हूं। मैंने सोचा कि मैं गुणों का उपयोग कर क्रिया स्तर पर मार्ग परिभाषित कर सकता हूं। – johndoe

0

तुम भी क्वेरी स्ट्रिंग के रूप में ग्राहक आईडी पारित कर सकते हैं, जो आम तौर पर है कि मुझे क्या करना:

<%: Html.ActionLink("Detail", "Detail", new { @customerId = Model.CustomerID}, null)%> 

MVC रूटिंग लागू नहीं करता है, बल्कि आपके URL और क्वेरी स्ट्रिंग के आधार पर मार्ग को हल करने का प्रयास करें।

14

तुम सच में विधि पैरामीटर नाम बदलने के लिए नहीं करना चाहते हैं, तो आप MVC बताने के लिए उसके तार्किक नाम होना चाहिए BindAttribute उपयोग कर सकते हैं:

public ActionResult Detail([Bind(Prefix = "id")] string customerId) 
संबंधित मुद्दे