是否可以显示另一个控制器的视图?
比方说,我有 CategoriesController
和 Category/NotFound.aspx
视图 . 在 CategoriesController
中,我可以轻松返回 View("NotFound")
.
现在说我有 ProductsController
以及添加产品的操作和视图 . 但是,此操作要求我们有一个类别来添加产品 . 例如, Products/Add/?catid=10
.
如果我无法根据 catid
找到类别,我想从Categories控制器显示 NotFound
视图,而不是在Products控制器下创建 CategoryNotFound
视图 .
这是可能的还是我以错误的方式构建事物?有没有一个很好的方法来做到这一点?
7 回答
是 . 默认情况下,ASP.NET MVC首先在
\Views\[Controller_Dir]\
中检查,但在此之后,如果找不到视图,则会检入\Views\Shared
.共享目录专门用于跨多个控制器共享视图 . 只需将您的View添加到Shared子目录,就可以了 .
如果您这样做
return View("~/Views/Wherever/SomeDir/MyView.aspx")
您可以返回任何您想要的视图 .您可以使用:
它在ASP.NET MVC 3中进行了测试,但也应该在ASP.NET MVC 2中运行 .
是的可能 . 像这样返回
RedirectToAction()
方法:你试过
RedirectToAction
吗?是的你可以 . 返回一个这样的动作:
一个例子:
这种方法将调用GET方法
您还可以将值传递给操作,如下所示:
您也可以从JavaScript / jQuery调用任何控制器 . 假设您有一个控制器返回404或其他一些用户控件/页面 . 然后,在某些操作中,从您的客户端代码中,您可以调用一些地址来激活您的控制器并以HTML格式返回结果,您的客户端代码可以获取此返回的结果并将其放在您想要的页面中...
使用此代码,您可以获得任何控制器: