2012-01-20 18 views
19

Web sayfası 1 denetleyicimde 2 değişken geçirerek Web sayfası 2'ye yönlendirmek istiyorum.RedirectToAction ve RedirectToRoute

RedirectToRoute kullanmayı denedim, ancak işe yaramayabilir; Yanlış URL görüntülenir. Daha sonra RedirectToAction kullanarak değiştirdim.

benim kodu: (çalışır)

Yönlendirme

routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name 
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters 
    new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = UrlParameter.Optional, applicantId = UrlParameter.Optional } // Parameter defaults 
); 

RedirectToAction

return RedirectToAction("Index", "UsersAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id }); 

RedirectToRoute (çalışmıyor)

return RedirectToRoute("CreateAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id }); 

Ah, diğeri şey olabilir mi İsteğe bağlı değil, gerekli parametreleri yapmak .... eğer öyleyse, nasıl?

+1

Parametreleri sağlamazlarsa ne olmasını bekliyorsunuz? Evet, bu mümkündür, ancak gerçekleşecek olan her şey 404 hatası ya da benzer bir şey olacaktır. İstediğin bu mu? –

cevap

19

Omit parametre varsayılan gerekli parametreleri yapmak: rota yönlendirme için

routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name 
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters 
    new { controller = "UsersAdditionalPreviousNames", action = "Index" } 
); 

, şunu deneyin: Steve Sanderson alıp başka alışkanlık rotalarınızı adlandırma değil

return RedirectToRoute(new 
{ 
    controller = "UsersAdditionalPreviousNames", 
    action = "Index", 
    userId = user.Id, 
    applicantId = applicant.Id 
}); 

. Her bir yolun, tüm parametreleri açıkça belirtmenizi sağlayan bir boş adı olabilir:

routes.MapRoute(
    null, // Route name 
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters 
    new { controller = "UsersAdditionalPreviousNames", action = "Index" } 
); 
+0

Teşekkürler zeytinyağı - bu harika çalıştı. Sadece RedirectToRoute sürümünün neden aşırı yüklenmiş yöntemin imzasını izlediğim gibi çalışmadığını merak ettiniz mi .... herhangi bir fikir? Teşekkürler – user1079925

+0

@ user1079925, dediğim gibi, rotalarımın ismini vermeme alışkanlığını aldım, bu yüzden bir rota adı alan aşırı yüklemeyi asla kullanmam. Umarım birileri size neyin yanlış gittiğini size kim söyleyebilir. Bu sizin rotalarınızı belirtmemenin nedenlerinden biri olabilir, alışkanlık benim için para verdi. – danludwig

+0

Tamam .... Ben senin öncülünü alıp rota isminden uzaklaşacağım - onun bir heves gibi bir yardım gibi görünüyor. – user1079925

İlgili konular