是否可以从另一个控制器显示视图?

例如,我有一个categororiescontroller和一个Category/NotFound。aspx视图。而在分类控制器,我可以很容易地返回视图(“NotFound”)。

现在假设我有一个ProductsController和一个用于添加产品的动作和视图。但是,此操作要求我们有一个Category来将产品添加到其中。例如:Products/Add/?catid=10。

如果我不能基于catid找到Category,我想从Categories控制器显示NotFound视图,而不是在Products控制器下创建一个CategoryNotFound视图。

这是可能的还是我用错误的方式组织事情?有什么好办法吗?


当前回答

你可以使用:

return View("../Category/NotFound", model);

在ASP中进行了测试。NET MVC 3,但也应该工作在ASP。Net MVC 2。

其他回答

使用这段代码,你可以获得任何控制器:

var controller = DependencyResolver.Current.GetService<ControllerB>();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext, 
controller);

是的,你可以。像这样返回一个Action:

return RedirectToAction("View", "Name of Controller");

一个例子:

return RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");

这种方法将调用GET方法

你也可以像这样传递值给action:

return RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees", new {id = id.ToString(), viewtype = "extended" });

是的,这是可能的。 返回一个RedirectToAction()方法,如下所示:

return RedirectToAction("ActionOrViewName", "ControllerName");

你试过RedirectToAction吗?

你可以使用:

return View("../Category/NotFound", model);

在ASP中进行了测试。NET MVC 3,但也应该工作在ASP。Net MVC 2。