2011-05-25 7 views
6

मैं एमवीसी 3 का उपयोग कर रहा हूं और मेरे आवेदन में क्षेत्र हैं। सामान्य तौर पर, सब कुछ ठीक काम करता है, मैं अपने क्षेत्र (जैसे व्यवस्थापक = क्षेत्र, नियंत्रक = विभाग) को इस तरह से नेविगेट कर सकते हैं:क्षेत्रों के साथ एमवीसी - एचटीएमएल। एक्शनलिंक गलत यूआरएल/रूट लौट रहा है?

<%: Html.ActionLink("Departments", "DepartmentIndex", "Department", new { area = "Admin"}, null)%> 

हालांकि, मैंने देखा है कि अगर मैं में क्षेत्र निर्दिष्ट नहीं करते मेरी एक्शनलिंक, उदाहरण के लिए

<%: Html.ActionLink("Test", "Index", "Home")%> 

यदि मैं "व्यवस्थापक" क्षेत्र में नेविगेट किया गया है तो यह काम करना बंद कर देगा। अर्थात मेरे यूआरएल अब http://localhost/myproj/Admin/Home/Index बजाय http://localhost/myproj/Home/Index

यहाँ क्या हो रहा है पर कोई भी विचार है?

एमवीसी ऐप/एरिया बनाते समय मेरे मार्ग सभी डिफ़ॉल्ट हैं। अर्थात

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      new[] { "MyProj.Controllers" } 
     ); 
    } 

और मेरे क्षेत्र पंजीकरण

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

डिजाइन द्वारा इस है? यह पोस्टिंग ActionLink के बजाय RouteLink उपयोग करने का सुझाव: RouteLink Is it required to have "area" routevalue on actionlink if the application was grouped into areas?

+1

क्या यह डिज़ाइन द्वारा है? शायद आपको स्पष्ट रूप से क्षेत्र = "" निर्दिष्ट करना होगा? – Raymond

+0

संभावित डुप्लिकेट [क्या इसे एक्शनलिंक पर "क्षेत्र" रूटव्यू होना आवश्यक है यदि एप्लिकेशन को क्षेत्रों में समूहीकृत किया गया हो?] (Http://stackoverflow.com/questions/5549497/is-it-required-to-have-area- routevalue-ऑन-actionlink-अगर-आवेदन-था-जीआर) –

उत्तर

7

This StackOverflow answer उपयोग करने के लिए कहते हैं कि सही ढंग से कहा गया है कि क्या आप क्षेत्रों उपयोग कर रहे हैं Area नाम देना होगा।

उदाहरण के लिए।

Html.ActionLink("Home", "Index", "Home", new { Area = "" }, new { }) 
संबंधित मुद्दे