在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

链接地址: http://www.djcxy.com/p/48119.html

上一篇: Display a view from another controller in ASP.NET MVC

下一篇: A potentially dangerous Request.Form value was detected from the client