2012-05-17 14 views
6

मैं एएसपी.नेट एमवीसी 3 के लिए नया हूं।गलत मार्ग उठाया जा रहा है और एक्शनलिंक गलत हाइपरलिंक उत्पन्न कर रहा है

मैंने ग्लोबल.एक्सएक्स में कुछ मार्ग कॉन्फ़िगर किए हैं, जिसके विरुद्ध मैं @ Html.ActionLink सहायक विधि का उपयोग करके कुछ हाइपरलिंक्स उत्पन्न कर रहा हूं।

Global.asax

routes.MapRoute(
    null, 
    "Section/{Page}/{SubPage}/{DetailPageName}", 
    new { controller = "Base" } 
    ); 

routes.MapRoute(
    null, 
    "Section/{Page}/{SubPage}", 
    new { controller = "Base", action = "SubPage" } 
    ); 

routes.MapRoute(
    null, 
    "Section/{Page}", 
    new { controller ="Base", action="LandingPage"} 
    ); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}", // URL with parameters 
    new { controller = "Base", action = "Index" } // Parameter defaults 
    ); 

ActionLink कोड

@Html.ActionLink(@subPages.LinkedPageName, "DetailPage", 
    new { 
     Controller = "Base", 
     Page = @ViewBag.PageName, 
     SubPage = @Model.SubPageName, 
     DetailPageName = subPages.LinkedPageName 
    }) 

ऊपर:

के सभी लिंक सही ढंग से नीचे दिए गए कोड में शीर्ष एक को छोड़कर गाया जा रहा है शीर्ष मार्ग यानी

चुनना चाहिए
routes.MapRoute(
    null, 
    "Section/{Page}/{SubPage}/{DetailPageName}", 
    new { controller = "Base" } 
    ); 

लेकिन यह डिफ़ॉल्ट मार्ग चुन रहा है!

+0

मैंने देखा कि आपके पहले मार्ग में कोई 'क्रिया' परिभाषित नहीं है। – Jacob

उत्तर

2

इस मार्ग परिभाषा में:

  1. यदि वहाँ एक controller पैरामीटर ActionLink में पारित कर दिया तो अपने मूल्य होना चाहिए: के लिए मार्ग से मिलान करने के

    routes.MapRoute(
        null, 
        "Section/{Page}/{SubPage}/{DetailPageName}", 
        new { controller = "Base" } 
        ); 
    

    निम्न स्थितियों के क्रम में संतुष्ट होना चाहिए Base

  2. Page पैरामीटर निर्दिष्ट होना चाहिए और यह खाली नहीं होना चाहिए क्योंकि इसका कोई डिफ़ॉल्ट मान
  3. नहीं है
  4. SubPage पैरामीटर निर्दिष्ट किया जाना चाहिए और क्योंकि यह कोई डिफ़ॉल्ट मान
  5. DetailPageName पैरामीटर निर्दिष्ट किया जाना चाहिए है और क्योंकि यह इस में तो कोई डिफ़ॉल्ट मान

है खाली नहीं होना चाहिए खाली नहीं होना चाहिए ActionLink पर कॉल करें:

@Html.ActionLink(@subPages.LinkedPageName, "DetailPage", 
    new { 
     Controller = "Base", 
     Page = @ViewBag.PageName, 
     SubPage = @Model.SubPageName, 
     DetailPageName = subPages.LinkedPageName 
    }) 

हालत # 1 स्पष्ट रूप से संतुष्ट है। लेकिन परिस्थितियों # 2, # 3, और # 4 संतुष्ट नहीं हो सकते हैं क्योंकि उनके मूल्य शून्य हो सकते हैं।

और क्योंकि आप बताते हैं कि मिलान समाप्त होने वाला मार्ग डिफ़ॉल्ट मार्ग है, मुझे संदेह है कि Page पैरामीटर शून्य या खाली है। वह है, @ViewBag.PageName एक शून्य या खाली मूल्य लौट रहा है।

PageName संपत्ति का मूल्य देखने के लिए अपने कोड में चेक करें (शायद डीबगर में या इसे बाहर प्रिंट करें) देखें।

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