2010-06-08 14 views
11

StackOverflow'taki yönlendirmeye baktım ve çok noobie sorusu var, ama açıklama yapmaktan başka bir şey yok.ASP.NET MVC Kullanıcı StackOverflow'ta bunun gibi yönlendiriliyor mu?

Ben Kullanıcılar kontrolörü

https://stackoverflow.com/Users
https://stackoverflow.com/Users/Login
https://stackoverflow.com/Users/124069/rockinthesixstring

Ne fark ediyorum bir "Kullanıcılar" denetleyici varsayılan muhtemelen olmasıdır "Dizin" eylem de özellikle arıyorum ve "Giriş" eylemi. Karşılaştığım problem, giriş işleminin göz ardı edilebileceği ve "UrlParameter.Optional [ID]" 'in de kullanılabileceğidir.

Bu, RegisterRoutes koleksiyonunda tam olarak nasıl görünüyor? Yoksa tamamen açık bir şey mi eksik?

DÜZENLEME: Şu anda sahip olduğum rota şu anda .. ama kesinlikle sağdan değil.

routes.MapRoute(_ 
     "Default", _ 
     "{controller}/{id}/{slug}", _ 
     New With {.controller = "Events", .action = "Index", .id = UrlParameter.Optional, .slug = UrlParameter.Optional} _ 
    ) 
+0

kişi kapatmak için oylama neden emin değilim. Bu yasal bir programlama sorusu. Gerçekten bunu anlamakla ilgileniyorum. –

+0

Kapatmak için oyu nerede görüyorsunuz? –

+0

Bu, __not__'un Meta'ya aittir. –

cevap

5

Muhtemelen de (o pozisyonda eylem adları içerecektir diğer yolları ile karışık değil bu yüzden) kimlik biçimi belirtmek için bir normal ifade kullanarak, idare için belirli bir rotayı kullanır. kesin bir cevap veren bir SO geliştirici olmadan

// one route for details 
routes.MapRoute("UserProfile", 
    "Users/{id}/{slug}", 
    new { controller = "Users", action = "Details", slug = string.Empty }, 
    new { id = @"\d+" } 
); 
// one route for everything else 
routes.MapRoute("Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional} 
); 
+0

Ben bu düz ileri yaklaşım çalışır kabul ediyorum ama aynı zamanda yazarın yaklaşım biraz daha karmaşık olduğundan şüpheleniyorum: yollar dış dosyalarda depolanır ve java script yönlendirme yardımcıları ilk istek başına oluşturulan iken, çalışma zamanında yüklü :) Buradaki uygulamalar –

+0

Yolların nasıl yükleneceğinden bağımsız olarak, yolun uygun parametrelerle controller.action ile nasıl eşleştiğini açıklamanın belirli bir yolunun olması gerekir. Sağ? –

+0

Evet. Yazarlar aşağı inecek ve cevap verecekseniz çok güzel olurdu :) –

1

, birçok olası kombinasyonları ve permütasyon elde olabilir ters mühendislik. İşte çok uyabilecek düşünüyorum bir tane:

routes.MapRoute(
    "UserProfile", 
    "Users/{id}/{slug}", 
     new { controller = "Users", action = "Profile" } 
); 

routes.MapRoute(
    "UserLogin", 
    "Users/Login", 
    new { controller = "Users", action = "Login" } 
); 

routes.MapRoute(
    "DefaultUser", 
    "Users", 
    new { controller = "Users", action = "Index" } 
);