另一个控制器的局部视图

时间:2011-06-09 14:12:03

标签: asp.net-mvc

我的问题是从不同控制器的视图列表中返回视图。 (MVC3)

首先我使用区域,但在这种情况下,控制器和视图都在同一区域。

在控制器中; 在DocumentController中 我从BelgeController返回一个视图,如

return View("~/Areas/Fin/Views/Belge/Details.cshtml", belgeView); 

问题出现在视图文件夹Document和Belge中,有一个名为edit.cshtml的部分,当呈现Belge / Details视图时,Mvc发现并使用了错误的edit.cshtml,是否有任何简单的引用方式正确的局部视图。 我在整个项目中都使用了这种方法,因此有100个Edit.cshtml,所以我正在寻找一个简单的修复方法。

修改 那么,问题是我如何使用RedirectToAction将模型传递给另一个控制器。

4 个答案:

答案 0 :(得分:3)

我不确定用例,但一般来说控制器不应该提供另一个控制器负责的任何东西。它应该返回其win的视图,其中RenderAction调用其他控制器,或者应该重定向。

答案 1 :(得分:1)

您可以将部分视图置于共享状态并为其指定一个特定名称,即:BelgeDetails.cshtml

然后你应该能够返回View(“BelgeDetails”,belgeView);

答案 2 :(得分:0)

如果需要从另一个控制器返回视图,则应使用RedirectToAction。如果您需要局部视图,则每个控制器都应具有自己的部分视图集,以用于其自身目的。控制器意味着自助服务和自力更生。您的模式不应要求不同控制器的不同功能。

也就是说,使用对OTHER控制器的jquery ajax调用来管理页面的动态元素(例如弹出模式等)是完全合理的。这将允许您创建动态页面元素,而无需将所有代码转储到一个控制器中。

答案 3 :(得分:0)

还有两个选择: 1)在模型中的层中移动数据,以便BelgeController的模型具有所需的信息,并调用RedirectToAction。 2)使用传递给RedirectToAction的ViewData进行破解。