Asp.Net MVC में "मुखपृष्ठ" सेट करें


105

Asp.net MVC में होम / इंडेक्स पर "होमपेज" (यानी www.foo.com को हिट करते समय प्रदर्शित होने वाला मार्ग) सेट है।

  • यह मान कहाँ संग्रहीत है?
  • मैं "मुखपृष्ठ" कैसे बदल सकता हूं?
  • क्या होम कंट्रोलर के इंडेक्स एक्शन में RedirectToRoute () का उपयोग करने से अधिक सुरुचिपूर्ण कुछ है?

मैंने अपने प्रोजेक्ट में होम / इंडेक्स के लिए तैयारी करने की कोशिश की और एक संदर्भ नहीं मिला, और न ही मैं IIS (6) में कुछ भी देख सका। मैंने डिफ़ॉल्ट .aspx पृष्ठ को रूट में देखा, लेकिन यह कुछ भी पुनरावृत्ति नहीं करता था।

धन्यवाद

जवाबों:


150

को देखो Default.aspx/Default.aspx.csऔर Global.asax.cs

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

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

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


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

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

यह इंगित करने योग्य है कि आपके पास एक से अधिक रूट हो सकते हैं । यह BLANK URL पैरामीटर के साथ आपका डिफ़ॉल्ट हो सकता है, लेकिन आप शायद दूसरा मार्ग चाहते हैं url: "{controller}/{action}/{id}"। बस मार्गों को अलग-अलग नाम दें।
जेस

यह उत्तर आपके लिए काम कर सकता है, लेकिन अगर आपको कई मार्गों की आवश्यकता है, तो यहां देखें stackoverflow.com/a/8470531/1804678
Jess

1
यह उत्तर केवल MVC 3 और पहले के लिए उपयुक्त है। अनुशंसित MVC 4 और बाद के दृष्टिकोण के लिए नीचे मेरा जवाब देखें।
JTW

19

ASP.NET कोर

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

app.UseMvc(routes =>
{
   routes.MapRoute(
   name: "default",
   template: "{controller=FooController}/{action=Index}/{id?}");
});

प्री-ASP.NET कोर

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

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 }
    );
}

5

चरण 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 }
                        );
    }
}

4
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

MVC 5 में रूटिंग की विशेषता

एमवीसी 5 से पहले आप routes.MapRoute(...)रूटकॉन्फिग.क्स फ़ाइल में कॉल करके विशिष्ट कार्यों और नियंत्रकों के लिए URL मैप कर सकते हैं । यह वह जगह है जहां मुखपृष्ठ के लिए यूआरएल संग्रहीत है ( 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 }
);

अब क्लास की DoSomethingकार्रवाई ExampleControllerको url में मैप किया जाएगा hey/now। लेकिन यह हर बार जब आप विभिन्न कार्यों के लिए मार्गों को परिभाषित करना चाहते हैं, तो थकाऊ हो सकते हैं। तो एमवीसी 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();
    }
}

1

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

एक नया नियंत्रक DefaultController बनाएं। सूचकांक क्रिया में, मैंने एक पंक्ति को पुनर्निर्देशित किया:

return Redirect("~/Default.aspx")

RouteConfig.cs में, मार्ग के लिए कंट्रोलर = "डिफ़ॉल्ट" बदलें।

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

आप शायद नियंत्रक के नाम पर "नियंत्रक" शब्द को छोड़ना भूल गए हैं, जिससे डिफ़ॉल्ट मार्ग बना है
amarax

0

यदि आप राउटर को बदलना नहीं चाहते हैं, तो बस HomeController पर जाएं और MyNewViewHere को इस तरह इंडेक्स में बदलें:

    public ActionResult Index()
    {
        return View("MyNewViewHere");
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.