2012-01-20 12 views
19

वेबपृष्ठ 1 के मेरे नियंत्रक में, मैं 2 चर से गुजरने के लिए वेबपृष्ठ 2 पर रीडायरेक्ट करना चाहता हूं।RedirectToAction और RedirectToRoute

मैंने RedirectToRoute का उपयोग करने का प्रयास किया, लेकिन इसे काम पर नहीं लाया जा सकता; गलत यूआरएल प्रदर्शित होता है। फिर मैंने RedirectToAction का उपयोग करने के लिए स्विच किया।

मेरी कोड:

रूटिंग

routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name 
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters 
    new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = UrlParameter.Optional, applicantId = UrlParameter.Optional } // Parameter defaults 
); 

RedirectToAction (जो काम करता है)

return RedirectToAction("Index", "UsersAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id }); 

RedirectToRoute (काम नहीं करता है)

return RedirectToRoute("CreateAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id }); 

ओह, और एक अन्य बात, क्या आप कर सकते हैं वैकल्पिक के बजाय पैरामीटर आवश्यक है .... यदि हां, तो कैसे?

+1

यदि वे पैरामीटर की आपूर्ति नहीं करते हैं तो आप क्या होने की उम्मीद करते हैं? हां, यह संभव है, लेकिन जो कुछ भी होगा वह 404 त्रुटि होगी, या कुछ समान होगा। क्या तुम यही चाहते हो? –

उत्तर

19

न आना पैरामीटर चूक आवश्यक पैरामीटर बनाने के लिए:

routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name 
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters 
    new { controller = "UsersAdditionalPreviousNames", action = "Index" } 
); 

मार्ग रीडायरेक्ट के लिए, इस प्रयास करें:

return RedirectToRoute(new 
{ 
    controller = "UsersAdditionalPreviousNames", 
    action = "Index", 
    userId = user.Id, 
    applicantId = applicant.Id 
}); 

एक और आदत मैं स्टीव सैंडरसन से उठाया अपने मार्गों का नामकरण नहीं है। प्रत्येक मार्ग में एक शून्य नाम हो सकता है, जो आपको सभी मानकों को स्पष्ट रूप से निर्दिष्ट करता है:

routes.MapRoute(
    null, // Route name 
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters 
    new { controller = "UsersAdditionalPreviousNames", action = "Index" } 
); 
+0

धन्यवाद olivehour - यह बहुत अच्छा काम किया। बस आश्चर्य हुआ कि क्यों RedirectToRoute का मेरा संस्करण काम नहीं करता है क्योंकि मैं ओवरलोडेड विधि के हस्ताक्षर का पालन कर रहा हूं .... कोई विचार? धन्यवाद – user1079925

+0

@ user1079925, जैसा कि मैंने कहा, मैंने अपने मार्गों का नामकरण करने की आदत नहीं उठाई, इसलिए मैंने अधिभार का उपयोग कभी नहीं किया जो रूट नाम लेता है। उम्मीद है कि कोई और जवाब देगा जो आपको बता सकता है कि वहां क्या गलत हुआ। यह आपके मार्गों का नाम न देने के कारणों में से एक हो सकता है, आदत ने मेरे लिए भुगतान किया है। – danludwig

+0

ठीक है .... मैं तुम्हारा नेतृत्व करने जा रहा हूं और मार्ग नामकरण से दूर चलेगा - ऐसा लगता है कि इसकी बाधाओं की बजाय एक मदद है। – user1079925

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