2009-07-17 19 views
89

asp.net MVC "मुखपृष्ठ" (यानी मार्ग जब www.foo.com मार प्रदर्शित करता है कि) में घर/सूचकांक को तैयार है।सेट "मुखपृष्ठ" Asp.Net MVC में

  • कहाँ यह मान संग्रहीत किया जाता है?
  • मैं "होमपेज" कैसे बदल सकता हूं?
  • घर नियंत्रक की अनुक्रमणिका कार्रवाई में RedirectToRoute() का उपयोग करने से कहीं अधिक सुरुचिपूर्ण है?

मैंने अपनी परियोजना में होम/इंडेक्स के लिए grepping करने की कोशिश की और मुझे कोई संदर्भ नहीं मिला, और न ही मैं आईआईएस (6) में कुछ भी देख सकता था। मैंने रूट में default.aspx पेज को देखा, लेकिन ऐसा कुछ भी रिलीज़ नहीं हुआ।

धन्यवाद

global.asax.cs में

उत्तर

133

देखो और Global.asax.cs

आप कर सकते हैं एक डिफ़ॉल्ट मार्ग स्थापित करें:

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

बस कंट्रोलर/एक्शन नामों को अपने वांछित डिफ़ॉल्ट में बदलें। रूटिंग टेबल में यह अंतिम मार्ग होना चाहिए।

+90

MVC 4 में गुण जोड़ सकते हैं, इस App_Start/RouteConfig.cs – NikolaiDante

+6

@NikolaiDante में किया जा सकता है कि आप के रूप में एक जवाब टिप्पणी करना चाहिए मैं लगभग इसे याद किया और यह इस जवाब से तेज है। :) धन्यवाद – GazB

+3

एमवीसी में 5. यदि आपके पास फॉर्म पेज है, तो जब आप होम पेज पर लॉगिन पर क्लिक करते हैं, तो यह फिर भी होम कंट्रोलर पर रीडायरेक्ट करेगा, न कि रूट में निर्दिष्ट आपके कस्टम कंट्रोलर। पंजीकरण कार्रवाई समान काम करेगा। तो रूट कॉन्फिग बदलने के अलावा, कुछ कोड बदलने की भी आवश्यकता है जहां रेडिरक्शन टॉक्शन ("इंडेक्स", "होम") को कॉल करना और इसे अपने कंट्रोलर और एक्शन नेम से बदलना है। – anIBMer

3

जांच RegisterRoutes विधि - यह मार्ग विन्यास के लिए डिफ़ॉल्ट जगह है ... Default.aspx/Default.aspx.cs पर

14

ASP.NET कोर

रूटिंग Startup वर्ग के Configure विधि में कॉन्फ़िगर किया गया है। "होमपेज" सेट करने के लिए बस निम्न जोड़ें। इससे उपयोगकर्ताओं को मैप रूट विधि में परिभाषित नियंत्रक और क्रिया के लिए भेजा जाएगा, जब वे आपकी साइट के बेस यूआरएल पर नेविगेट करते हैं, यानी, yoursite.com उपयोगकर्ताओं को yoursite.com/foo/index:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
    name: "default", 
    template: "{controller=FooController}/{action=Index}/{id?}"); 
}); 
पर रूट करेगा

Pre-ASP.NET कोर

उपयोग RegisterRoutes विधि या तो App_Start/RouteConfig.cs में स्थित (MVC 3 और 4) या Global.asax.cs (MVC 1 और 2) नीचे दिखाया गया है। यह उपयोगकर्ताओं को होगा मार्ग उपयोगकर्ता yoursite.com/foo/index के नियंत्रक और कार्रवाई करता है, तो वे आपकी साइट के आधार URL, यानी करने के लिए नेविगेट MapRoute विधि में परिभाषित किया गया, yoursite.com के लिए रूट का कारण होगा:

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

    // Here I have created a custom "Default" route that will route users to the "YourAction" method within the "FooController" controller. 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "FooController", action = "Index", id = UrlParameter.Optional } 
    ); 
} 
3
public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}",    
      defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional } 
     ); 
    } 
} 
2

मैं जवाब की कोशिश की लेकिन यह मेरे लिए काम किया नहीं था।

एक नया नियंत्रक DefaultController बनाएं: यह मैं क्या कर रही है समाप्त हो गया है।

return Redirect("~/Default.aspx") 

RouteConfig.cs में, परिवर्तन नियंत्रक = मार्ग के लिए "डिफ़ॉल्ट": सूचकांक कार्रवाई में, मैं एक पंक्ति रीडायरेक्ट लिखा था।

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional } 
     ); 
+0

यह एक रीडायरेक्ट और खोज इंजन बनाएगा जैसे नहीं ... – oneNiceFriend

3

चरण 1: अपने समाधान में Global.asax फ़ाइल पर क्लिक करें।

चरण 2: फिर

RouteConfig.RegisterRoutes(RouteTable.Routes);

चरण 3 की परिभाषा पर जाएँ: बदलें नियंत्रक का नाम और दृश्य का नाम

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

     routes.MapRoute(name: "Default", 
         url: "{controller}/{action}/{id}", 
         defaults: new { controller = "Home", 
             action = "Index", 
             id = UrlParameter.Optional } 
         ); 
    } 
} 
2

MVC 5

में रूटिंग गुण MVC से पहले 5 आप routes.MapRoute(...) पर कॉल करके विशिष्ट क्रियाओं और नियंत्रकों को यूआरएल मैप कर सकते हैं RouteConfig.cs फ़ाइल में। यह वह जगह है जहां मुखपृष्ठ के लिए यूआरएल संग्रहीत किया जाता है (Home/Index)। लेकिन अगर आप डिफ़ॉल्ट मार्ग के रूप में नीचे दिखाया गया है, संशोधित करने,

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

ध्यान रखें कि यह अन्य कार्यों और नियंत्रकों के URL को प्रभावित करेगा। उदाहरण के लिए, यदि आपके पास ExampleController नामक नियंत्रक वर्ग था और इसके अंदर एक क्रिया विधि DoSomething कहलाती है, तो अपेक्षित डिफ़ॉल्ट यूआरएल ExampleController/DoSomething अब काम नहीं करेगा क्योंकि डिफ़ॉल्ट मार्ग बदल दिया गया था।

इस का संभावित हल डिफ़ॉल्ट मार्ग के साथ गड़बड़ और अन्य कार्यों और इसलिए तरह नियंत्रकों के लिए RouteConfig.cs फ़ाइल में नए मार्गों का निर्माण नहीं,

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
routes.MapRoute(
    name: "Example", 
    url: "hey/now", 
    defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional } 
); 

अब ExampleController वर्ग के DoSomething कार्रवाई करेंगे करने के लिए है यूआरएल hey/now पर मैप किया जाए। लेकिन हर बार जब आप विभिन्न कार्यों के लिए मार्ग परिभाषित करना चाहते हैं तो यह करने के लिए कठिन हो सकता है। तो MVC 5 में आप अब, इसलिए जैसे कार्यों के लिए यूआरएल से मिलान करने के

public class HomeController : Controller 
{ 
    // url is now 'index/' instead of 'home/index' 
    [Route("index")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    // url is now 'create/new' instead of 'home/create' 
    [Route("create/new")] 
    public ActionResult Create() 
    { 
     return View(); 
    } 
}