Czy można wyświetlić widok z innego kontrolera?
Powiedzmy na przykład mam CategoriesController
i do Category/NotFound.aspx
widzenia. Będąc w CategoriesController
, mogę łatwo wrócić View("NotFound")
.
Teraz powiedz, że mam ProductsController
akcję i akcję oraz widok, aby dodać produkt. Jednak działanie to wymaga posiadania kategorii, do której można dodać Produkt. Na przykład Products/Add/?catid=10
.
Jeśli nie mogę znaleźć kategorii na podstawie catid
, chcę wyświetlić NotFound
widok z kontrolera kategorii zamiast tworzyć CategoryNotFound
widok pod kontrolerem produktów.
Czy to możliwe, czy też źle układam rzeczy? Czy jest na to dobry sposób?
new ViewResult { ViewName = "~/Views/Error/Unauthorised.cshtml" };
i zadziałałoMożesz użyć:
Został przetestowany w ASP.NET MVC 3, ale powinien również działać w ASP.NET MVC 2.
źródło
"~/Views/Category/NotFound.cshtml"
.Tak, to możliwe. Zwróć taką
RedirectToAction()
metodę:źródło
Próbowałeś
RedirectToAction
?źródło
Tak, możesz. Zwróć działanie takie jak to:
Przykład:
To podejście wywoła metodę GET
Możesz także przekazać wartości do akcji takiej jak ta:
źródło
Możesz także wywołać dowolny kontroler z JavaScript / jQuery . Załóżmy, że masz kontroler zwracający 404 lub inną kontrolę / stronę użytkownika. Następnie, po pewnym działaniu, z kodu klienta możesz zadzwonić na jakiś adres, który uruchomi kontroler i zwróci wynik w formacie HTML , kod klienta może pobrać ten zwrócony wynik i umieścić go w dowolnym miejscu na stronie ...
źródło
Za pomocą tego kodu możesz uzyskać dowolny kontroler:
źródło