Asp.Net MVC এ "হোমপেজ" সেট করুন


105

এএসপিএন এমভিসিতে "হোমপেজ" (অর্থাত্ www.foo.com মারার সময় যে রুটটি প্রদর্শিত হয়) হোম / ইনডেক্সে সেট করা আছে।

  • কোথায় এই মান সঞ্চিত?
  • আমি কীভাবে "হোমপেজ" পরিবর্তন করতে পারি?
  • হোম কন্ট্রোলারের সূচক ক্রিয়ায় RedirectToRoute () ব্যবহার করার চেয়ে আরও কি মার্জিত কিছু আছে?

আমি আমার প্রকল্পে হোম / ইনডেক্সের জন্য গ্রেপিংয়ের চেষ্টা করেছি এবং রেফারেন্সটি খুঁজে পাইনি বা আইআইএস-তেও কিছু দেখতে পাচ্ছি না (6)। আমি মূলটিতে ডিফল্ট.এএসপিএক্স পৃষ্ঠাটি দেখেছি, তবে এটি কোনও প্রকার সুদৃ .় বলে মনে হচ্ছে না।

ধন্যবাদ

উত্তর:


150

তাকান Default.aspx/Default.aspx.csএবং Global.asax.cs

আপনি একটি ডিফল্ট রুট সেট আপ করতে পারেন:

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

আপনার পছন্দসই ডিফল্টে কেবল নিয়ন্ত্রক / ক্রিয়াকলাপের নাম পরিবর্তন করুন change রাউটিং টেবিলের এটাই শেষ রুট হওয়া উচিত।


6
@ নিকোলাইডেন্টে আপনার মন্তব্যটি একটি উত্তর করা উচিত কারণ আমি প্রায় এটি মিস করেছি এবং এটি এই উত্তরটির চেয়ে দ্রুত। :) ধন্যবাদ
GazB

3
এমভিসি ৫-এ যদি আপনার কোনও ফর্ম লগইন থাকে, আপনি যখন হোম পৃষ্ঠায় লগইন ক্লিক করেন, তখন এটি হোম কন্ট্রোলারে পুনর্নির্দেশ করবে, রুটে নির্দিষ্ট করা আপনার কাস্টম নিয়ামক নয়। রেজিস্টার ক্রিয়া একই জিনিস করতে হবে। সুতরাং রুট কনফিগ পরিবর্তন করা ছাড়াও, এমন কিছু কোড পরিবর্তন করতে হবে যেখানে রিডাইরেকশনটোঅ্যাকশন ("সূচক", "হোম") কল করে এটি আপনার নিজের নিয়ামক এবং ক্রিয়া নামগুলির সাথে প্রতিস্থাপন করবে।
anIBMer

আপনার একাধিক রুট থাকতে পারে তা উল্লেখ করার মতো । এটি BLANK URL পরামিতিগুলির সাথে আপনার ডিফল্ট হতে পারে তবে আপনি সম্ভবত দ্বিতীয় রুট চান url: "{controller}/{action}/{id}"। রুটগুলিকে আলাদা আলাদা নাম দিন।
জেস

এই উত্তরটি আপনার পক্ষে কাজ করতে পারে তবে আপনার যদি একাধিক রুটের প্রয়োজন হয় তবে এখানে দেখুন স্ট্যাকওভারফ্লো.com
জেস

1
এই উত্তরটি কেবলমাত্র এমভিসি 3 এবং এর আগে উপযুক্ত। প্রস্তাবিত এমভিসি 4 এবং পরবর্তী পদ্ধতির জন্য নীচে আমার উত্তরটি দেখুন।
জেটিডাব্লু

19

এএসপি.নেট কোর

রাউটিং ক্লাসের Configureপদ্ধতিতে কনফিগার করা হয় Startup। "হোমপেজ" সেট করতে কেবল নিম্নলিখিতটি যুক্ত করুন। এটি যখন ব্যবহারকারীরা আপনার সাইটের বেস ইউআরএল নেভিগেট করে, অর্থাত্ আপনাররাইট ডট কম ব্যবহারকারীদের আপনারাইসাইট.com/foo/index- এ নেভিগেট করে: তখন ব্যবহারকারীরা নিয়ন্ত্রক এবং মানচিত্রের পদ্ধতিতে সংজ্ঞায়িত ক্রিয়াকলাপে প্রবেশ করবে cause

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

প্রাক- ASSP.NET কোর

নীচে দেখানো হিসাবে App_Start / RouteConfig.cs (এমভিসি 3 এবং 4) বা Global.asax.cs (এমভিসি 1 এবং 2) এর মধ্যে অবস্থিত নিবন্ধকরাটস পদ্ধতি ব্যবহার করুন। এটি ব্যবহারকারীদের আপনার সাইটের বেস ইউআরএল নেভিগেট করলে, অর্থাৎ আপনারসাইট ডটকম ব্যবহারকারীকে আপনারসাইট.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: আপনার সমাধানের গ্লোবাল.অ্যাস্যাক্স ফাইলটিতে ক্লিক করুন।

পদক্ষেপ 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

এমভিসি 5 এ অ্যাট্রিবিউট রাউটিং

এমভিসি 5 এর আগে আপনি routes.MapRoute(...)রাউটকনফিগ.সি.সি. ফাইলগুলিতে কল করে নির্দিষ্ট ক্রিয়া এবং নিয়ন্ত্রকদের URL গুলি ম্যাপ করতে পারেন map হোমপেজের জন্য ইউআরএল সংরক্ষণ করা হয় এটি এখানে ( Home/Index)। তবে আপনি যদি নীচের মত দেখাচ্ছে ডিফল্ট রুট পরিবর্তন করেন,

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

মনে রাখবেন যে এটি অন্যান্য ক্রিয়া এবং নিয়ামকগুলির URL গুলিকে প্রভাবিত করবে। উদাহরণস্বরূপ, যদি আপনার নামে একটি কন্ট্রোলার ক্লাস নামে থাকে ExampleControllerএবং এর অভ্যন্তরে কোনও অ্যাকশন পদ্ধতির নামকরণ করা হয় DoSomething, তবে পূর্বনির্ধারিত ডিফল্ট url ExampleController/DoSomethingআর কাজ করবে না কারণ ডিফল্ট রুট পরিবর্তিত হয়েছিল।

এর জন্য একটি কার্যপ্রণালী হ'ল ডিফল্ট রুটের সাথে গোলযোগ না করা এবং এই জাতীয় ক্রিয়াকলাপ এবং এর মতো নিয়ন্ত্রণকারীদের জন্য রুটকনফিগ.সি.এস. ফাইলটিতে নতুন রুট তৈরি করা,

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ইউআরএলকে ম্যাপ করা হবে hey/now। আপনি যখন বিভিন্ন ক্রিয়াকলাপের জন্য রুটগুলি নির্ধারণ করতে চান তবে প্রতিবারের জন্য এটি করা ক্লান্তিকর হতে পারে। এমভিসি 5 এ এখন আপনি এই জাতীয় ক্রিয়ায় url- এর সাথে মিলের জন্য বৈশিষ্ট্যগুলি যুক্ত করতে পারেন,

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

আমি উত্তরটি চেষ্টা করেছিলাম কিন্তু এটি আমার পক্ষে কার্যকর হয়নি। এটিই আমি শেষ করেছিলাম:

একটি নতুন নিয়ামক ডিফল্ট নিয়ন্ত্রণকারী তৈরি করুন। সূচক ক্রিয়াকলাপে, আমি একটি লাইন পুনঃনির্দেশ লিখেছিলাম:

return Redirect("~/Default.aspx")

RouteConfig.cs এ, রুটের জন্য নিয়ামক = "ডিফল্ট" পরিবর্তন করুন।

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

আপনি সম্ভবত নিয়ামকের নামে "কন্ট্রোলার" শব্দটি বাদ দিতে, ডিফল্ট রুট তৈরি করতে ভুলে গিয়েছিলেন
অ্যামারাক্স

0

আপনি যদি রাউটারটি পরিবর্তন করতে না চান তবে কেবল হোম কন্ট্রোলার এ যান এবং সূচীতে MyNewViewHere এর মতো পরিবর্তন করুন:

    public ActionResult Index()
    {
        return View("MyNewViewHere");
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.