Display a view from another controller in ASP.NET MVC
Is it possible to display a view from another controller?
Say for example I have a CategoriesController
and a Category/NotFound.aspx
view. While in the CategoriesController
, I can easly return View("NotFound")
.
Now say I have a ProductsController
and an action and view to add a product. However, this action requires that we have a Category to add the Product to. For example, Products/Add/?catid=10
.
If I am not able to find the Category based on catid
, I want to show the NotFound
view from the Categories controller instead of creating a CategoryNotFound
view under the Products controller.
Is this possible or am I structuring things in the wrong way? Is there a good way to do this?
Yes. By default, ASP.NET MVC checks first in \Views\[Controller_Dir]\
, but after that, if it doesn't find the view, it checks in \Views\Shared
.
The shared directory is there specifically to share Views across multiple controllers. Just add your View to the Shared subdirectory and you're good to go.
If you do return View("~/Views/Wherever/SomeDir/MyView.aspx")
You can return any View you'd like.
You can use:
return View("../Category/NotFound", model);
It was tested in ASP.NET MVC 3, but should also work in ASP.NET MVC 2.
Yes its possible.
Return a RedirectToAction()
method like this:
return RedirectToAction("ActionOrViewName", "ControllerName");