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?
This question is related to
asp.net
asp.net-mvc
views
controllers
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");
With this code you can obtain any controller:
var controller = DependencyResolver.Current.GetService<ControllerB>();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext,
controller);
Have you tried RedirectToAction
?
You can also call any controller from JavaScript/jQuery. Say you have a controller returning 404 or some other usercontrol/page. Then, on some action, from your client code, you can call some address that will fire your controller and return the result in HTML format your client code can take this returned result and put it wherever you want in you your page...
Yes, you can. Return an Action like this :
return RedirectToAction("View", "Name of Controller");
An example:
return RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");
This approach will call the GET method
Also you could pass values to action like this:
return RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees", new {id = id.ToString(), viewtype = "extended" });
Source: Stackoverflow.com