Cara mengatur Kontroler Default di asp.net MVC 4 & MVC 5


106

Bagaimana cara menetapkan Pengontrol Default untuk proyek ASP.NET MVC 4 saya tanpa menjadikannya HomeController ?

Bagaimana saya harus mengatur Area default saat aplikasi dimulai?


seperti akan mengubah dari "/" menjadi "/ home sebagai halaman root?" / home "ini harus terlihat di browser pelanggan.
Andre Mesquita

Jawaban:


165

cara terbaik adalah dengan mengubah rute Anda. Rute default (ditentukan dalam App_Start Anda) set/Home/Index

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

sebagai halaman arahan default. Anda dapat mengubahnya menjadi rute yang Anda inginkan.

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Sales", action = "ProjectionReport", 
        id = UrlParameter.Optional }
);

13
Di MVC 4, rute default disetel di App_Start / RouteConfig.cs
Eric Labashosky

Sangat benar. Saya saat ini mengerjakan proyek di keduanya dan mengabaikan hal-hal ini;)
Dave Alperovich

1
Dave benar, tapi saya ingin menambahkan bahwa di MVC 4 perutean tidak lagi dilakukan di Global.asax, melainkan di RouteConfig.cs di bawah App_Start .
Orang Samaria yang Baik

2
Bagaimana membuat itu bekerja ketika pengontrol yang direferensikan dalam rute default berada di area lain (yaitu bukan yang root)?
superjos

Anda harus dapat membuat rute default ke"AreaName/{controller}/{action}/{id}"
Dave Alperovich

30

Tetapkan kode di bawah ini di RouteConfig.cs di folder App_Start

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional });
}

JIKA masih tidak berhasil maka lakukan langkah-langkah di bawah ini

Cara Kedua: Anda cukup mengikuti langkah-langkah di bawah ini,

1) Klik kanan pada Proyek Anda

2) Pilih Properties

3) Pilih opsi Web, lalu Pilih Halaman Tertentu (Kontroler / Tampilan), lalu setel halaman login Anda

Di sini, Akun adalah pengontrol saya dan Login adalah metode tindakan saya (disimpan di Pengontrol Akun)

Silakan lihat masukkan deskripsi gambar di sinitangkapan layar terlampir .


15
"Cara kedua" Anda adalah tentang apa yang terjadi saat Anda men-debug proyek web Anda. Ini tidak ada hubungannya dengan "pengontrol default", yaitu halaman apa yang ditampilkan saat Anda menavigasi ke halaman arahan situs Anda.
Martin Liversage

25

Saya tidak melihat pertanyaan ini dijawab:

Bagaimana saya harus mengatur Area default saat aplikasi dimulai?

Jadi, inilah cara Anda mengatur Area default:

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

1
pertanyaan yang bagus, mengapa Anda tidak membuatnya menjadi satu?
stuartdotnet

Apa itu 'Area'? Jika saya mendefinisikan Tampilan, apakah tata letak yang direferensikan dimuat, lalu permintaan HTTP terpisah dengan data tampilan saya? (yaitu operasi Ajax terpisah) atau apakah tata letak diberikan dan dibungkus di sekitar tampilan saya?
Gus Crawford

2
@GusCrawford Apa itu 'Area'? Dari msdn.microsoft.com/en-us/library/ee671793(VS.100).aspx : Untuk mengakomodasi proyek-proyek besar, ASP.NET MVC memungkinkan Anda mempartisi aplikasi Web menjadi unit-unit yang lebih kecil yang disebut sebagai area. Area menyediakan cara untuk memisahkan aplikasi MVC Web yang besar menjadi pengelompokan fungsional yang lebih kecil. Suatu area secara efektif merupakan struktur MVC di dalam aplikasi. Sebuah aplikasi bisa berisi beberapa struktur MVC (area).
Amna Ali

Sedangkan untuk pertanyaan lainnya, menurut saya tidak ada hubungannya dengan jawaban ini, dan sepertinya tidak relevan bahkan dengan pertanyaan aslinya. Mungkin, Anda harus mempostingnya di tempat lain.
Amna Ali

Saya akan bertanya secara terpisah di utas baru, terima kasih atas perspektifnya.
Gus Crawford

2

Jika Anda hanya memiliki satu pengontrol dan Anda ingin mengakses setiap tindakan di root, Anda dapat melewati nama pengontrol seperti ini

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.