2011-03-09 17 views
36

में क्षेत्रों को कॉन्फ़िगर कैसे करें कोई भी जानता है कि एएसपी.नेट एमवीसी 3 में क्षेत्रों को कॉन्फ़िगर कैसे करें। मैंने here में एरिया के बारे में एक लेख पढ़ा। लेकिन वह लेख एमवीसी 3 पर आधारित नहीं है। MVC3 में कोई समारोह RouteCollection routes में MapRootArea नामित जो Global.asaxएएसपी.नेट एमवीसी 3

routes.MapRootArea("{controller}/{action}/{id}", 
       "AreasDemo", 
        new { controller = "Home", action = "Index", id = "" }); 

में पाया जाता है जब मैं बनाने MVC3 का उपयोग कर एक नया क्षेत्र है, मैं उस क्षेत्र जो AreaRegistration से विरासत में मिला और ऐसा दिखाई देगा का एक वर्ग है: (यहां ब्लॉग क्षेत्र का नाम है)

public class BlogsAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "Blogs"; 
     } 
    } 

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

क्या कोई मेरी मदद करेगा कृपया मुझे एमवीसी 3 में क्षेत्र कैसे कॉन्फ़िगर करें। किसी भी प्रकार का लिंक भी सहायक होगा।

उत्तर

40

अपनी वेब प्रोजेक्ट पर राइट क्लिक करें और जोड़ें -> क्षेत्र चुनें ... फिर क्षेत्र का नाम टाइप करें और विजुअल स्टूडियो बाकी सभी आवश्यक वर्गों को उत्पन्न करने के लिए बाकी की देखभाल करेगा। उदाहरण के लिए क्षेत्र पंजीकरण इस प्रकार दिखाई देंगे:

public class AreasDemoAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "AreasDemo"; 
     } 
    } 

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

और की Application_Start में अपने Global.asax सभी की जरूरत है:

AreaRegistration.RegisterAllAreas(); 
+0

उत्तर के लिए धन्यवाद। मुझे कैसे पता चलेगा कि क्षेत्र ठीक से पंजीकृत है? मैंने इस लिंक का उपयोग अपने साझा _layout में किया था, लेकिन यह मुझे कहीं भी नहीं ले रहा है @ एचटीएमएल। एक्शनलिंक ("ब्लॉग", "इसके बारे में", "होम", नया {क्षेत्र = "ब्लॉग"}) – Imrul

+0

@ इमरुल, जो मैं देख सकता हूं आपका कोड आपके क्षेत्र को 'ब्लॉग' कहा जाता है, न कि 'ब्लॉग', इसलिए कोशिश करें: '@ एचटीएमएल। एक्शनलिंक (" ब्लॉग "," इसके बारे में "," होम ", नया {क्षेत्र =" ब्लॉग "})'। यह भी सुनिश्चित करें कि इस क्षेत्र के अंदर 'होमकंट्रोलर' है। वर्तनी गलती के लिए –

+0

क्षमा करें। मुझे लगता है कि मुझे अपनी समस्या मिली है, अगर मैं इसे अपने _layout में प्रस्तुत करता हूं तो यह एरिया/कंट्रोलर/एक्शन "@ एचटीएमएल.एक्शनलिंक (" ब्लॉग "," इंडेक्स "," ब्लॉगहोम ", नया {क्षेत्र =" ब्लॉग "})"। क्या मैं एक्शनलिंक सहायक में कुछ भी गलत कर रहा हूं? और अब मैं खोजता हूं कि रूट और एरिया में एक ही नियंत्रक का नाम संभव नहीं हो सकता है। इसके लिए मुझे होमहोम में होम का नाम बदलना पड़ा। और एफवाईआई Blog जेनरेटेड एचटीएमएल है और http: // localhost: 4135/ब्लॉग/ब्लॉगहोम/इंडेक्स का उपयोग BlogHome नियंत्रक को हिट करता है और पृष्ठ दिखाता है। – Imrul

5

आप जड़ में एक ही नियंत्रक नाम और क्षेत्र हो सकता है, आप बस इसे परिभाषित करना है।

अपने Global.asax में, जैसा कि नीचे

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

यह भी पता चला routes.maproute की अंतिम पंक्ति जोड़ने के अपने एरेस में नियंत्रक का नाम जोड़ें/????? AreaRegistration.cs फ़ाइल

context.MapRoute(
     "Membership_default", 
     "Membership/{controller}/{action}/{id}", 
     new { controller= "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
1

कृपया नीचे दी गई छवियां दिखाती हैं कि एमवीसी में क्षेत्र को कॉन्फ़िगर कैसे करें। enter image description here

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