Czy można przekierować do innego widoku z kontrolera?
Na przykład wszystkie moje kontrolery dziedziczą z kontrolera niestandardowego, który ma konstruktora, którego chcę przekierować do innego widoku, jeśli określone kryteria nie są spełnione. Mam nadzieję, że to ma sens.
.net
asp.net
asp.net-mvc
Gavin
źródło
źródło
if (true) { return View(); } else { return View("another view name"); }
źródło
Najprostszym sposobem jest użycie return View.
return View("ViewName");
Pamiętaj, że fizyczna nazwa „ViewName” powinna być podobna do ViewName.cshtml w Twoim projekcie, jeśli używasz MVC C # / .NET.
źródło
Nie jestem w 100% pewien, jakie są do tego warunki, ale dla mnie powyższe nie zadziałało bezpośrednio, pomyślałem, że było blisko. Myślę, że to dlatego, że potrzebowałem „id” dla mojego widoku, ponieważ w modelu był on nazwany „ObjectID”.
Miałem model z różnymi informacjami. Potrzebowałem tylko identyfikatora.
Przed powyższym utworzyłem nowy obiekt System.Web.Routing.RouteValueDictionary i dodałem potrzebny identyfikator.
(System.Web.Routing.)RouteValueDictionary RouteInfo = new RouteValueDictionary(); RouteInfo.Add("id", ObjectID); return RedirectToAction("details", RouteInfo);
(Uwaga: projekt MVC, o którym mowa, nie został przeze mnie utworzony, więc nie wiem, gdzie są wszystkie właściwe „skrzypiące” bity).
źródło
Oto, co możesz zrobić:
return View("another view name", anotherviewmodel);
źródło