Asp.net MVC 4 ve MVC 5'te Varsayılan Denetleyici nasıl ayarlanır


106

ASP.NET MVC 4 projem için HomeController yapmadan Varsayılan Denetleyiciyi nasıl ayarlayabilirim ?

Uygulama başladığında varsayılan bir Alanı nasıl kurmalıyım ?


Kök sayfa olarak "/" yerine "/ ana sayfa olarak değişiyor mu? Bu" / ev "müşterinin tarayıcısında görünmelidir.
Andre Mesquita

Yanıtlar:


165

en iyi yol rotanızı değiştirmektir. Varsayılan yol (App_Start'ınızda tanımlanan) setler/Home/Index

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

varsayılan açılış sayfası olarak. Bunu istediğiniz herhangi bir rota olacak şekilde değiştirebilirsiniz.

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

13
MVC 4'te varsayılan yol App_Start / RouteConfig.cs'de ayarlanır
Eric Labashosky

Çok doğru. Her ikisinde de projeler üzerinde çalışıyorum ve bunları görmezden
geliyorum

1
Dave haklı, ama MVC 4 yönlendirme artık daha ziyade de, Global.asax yapıldığını eklemek istiyorum RouteConfig.cs altında App_Start .
İyi Samaritan

2
Varsayılan rotada referans verilen kontrolör başka bir alanda (yani kökte değil) oturduğunda bu nasıl çalışır?
superjos

varsayılan rotayı şu adrese gidebilmeniz gerekir"AreaName/{controller}/{action}/{id}"
Dave Alperovich

30

Kod aşağıda yer alan RouteConfig.cs içinde App_Start klasörüne

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

Hala çalışmıyorsa, aşağıdaki adımları uygulayın

İkinci Yol: Aşağıdaki adımları basitçe izleyin,

1) Projenize sağ tıklayın

2) Özellikler'i seçin

3) Web seçeneğini seçin ve ardından Belirli Sayfayı Seçin (Denetleyici / Görünüm) ve ardından oturum açma sayfanızı ayarlayın

Burada, Hesap benim denetleyicimdir ve Giriş benim eylem yöntemimdir (Hesap Denetleyicisine kaydedilir)

Lütfen ekteki görüntü açıklamasını buraya girinekran görüntüsüne bakın.


15
"İkinci yolunuz", web projenizde hata ayıkladığınızda ne olacağı ile ilgilidir. Bunun "varsayılan denetleyici" ile, yani sitenizin açılış sayfasına gittiğinizde hangi sayfanın gösterileceği ile hiçbir ilgisi yoktur.
Martin Liversage

25

Bu sorunun yanıtlandığını görmedim:

Uygulama başladığında varsayılan bir Alanı nasıl kurmalıyım ?

Öyleyse, varsayılan bir Alanı nasıl kuracağınız aşağıda açıklanmıştır:

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
harika soru, neden onu tek olarak yaratmıyorsun?
stuartdotnet

'Alan' nedir? Bir Görünüm tanımlarsam, başvurulan düzen yüklenir ve ardından görünüm verilerimle ayrı bir HTTP isteği yüklenir mi? (yani ayrı bir Ajax işlemi) veya düzen oluşturulmuş ve benim görünümümün etrafına sarılmış mı?
Gus Crawford

2
@GusCrawford 'Alan' Nedir? Gönderen msdn.microsoft.com/en-us/library/ee671793(VS.100).aspx : büyük projeler yerleştirmek için, ASP.NET MVC alanları olarak adlandırılır daha küçük birimler halinde size bölme Web uygulamaları sağlar. Alanlar, büyük bir MVC Web uygulamasını daha küçük işlevsel gruplara ayırmanın bir yolunu sağlar. Bir alan, bir uygulama içindeki etkili bir MVC yapısıdır. Bir uygulama birkaç MVC yapısı (alanı) içerebilir.
Amna Ali

Diğer soruya gelince, bunun bu cevapla ilgili olduğunu sanmıyorum ve orijinal soruyla bile alakalı görünmüyor. Belki, başka bir yere göndermelisiniz.
Amna Ali

Perspektif için teşekkürler, yeni bir ileti dizisinde ayrı ayrı soracağım.
Gus Crawford

2

Yalnızca bir denetleyiciniz varsa ve kök üzerindeki her eyleme erişmek istiyorsanız, denetleyici adını bu şekilde atlayabilirsiniz.

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.