在ASP.NET MVC中显示来自另一个控制器的视图
是否可以显示来自另一个控制器的视图?
说例如我有一个CategoriesController
和一个Category/NotFound.aspx
视图。 在CategoriesController
,我可以轻松地返回View("NotFound")
。
现在说我有一个ProductsController
和一个动作和视图来添加一个产品。 但是,此操作要求我们有一个类别来添加产品。 例如, Products/Add/?catid=10
。
如果我无法找到基于catid
的类别,我想从类别控制器中显示NotFound
视图,而不是在Products控制器下创建CategoryNotFound
视图。
这是可能的还是我以错误的方式构造事物? 有没有一个好的方法来做到这一点?
是。 默认情况下,ASP.NET MVC首先在Views[Controller_Dir]
,但在此之后,如果它没有找到视图,它将检查ViewsShared
。
共享目录专门用于跨多个控制器共享视图。 只需将您的View添加到Shared子目录,您就可以轻松前往。
如果您确实return View("~/Views/Wherever/SomeDir/MyView.aspx")
您可以返回任何您想要的视图。
您可以使用:
return View("../Category/NotFound", model);
它在ASP.NET MVC 3中进行了测试,但也应该在ASP.NET MVC 2中工作。
你有没有尝试过RedirectToAction
?
上一篇: Display a view from another controller in ASP.NET MVC
下一篇: A potentially dangerous Request.Form value was detected from the client