我正在开发一个MVC3应用程序,其中一些用户应该编辑事件。 “管理员”和“发起人”都应该能够编辑他们的活动。视图是一样的。我创建了一个面积为我的管理者和推动者,因为他们有非常不同的选择。我的结构有点像这样在控制器/区域之间共享编辑页面
/admin/events/edit/1
/promoter/events/edit/1
在这两个领域我使用的是不同的控制器,因为布局页应该是在促进不同/管理员区域。 Offcourse会导致重复,而我正在寻找更好的解决方案。我可以放在“共享”文件夹中的视图,但是如何防止有两种方法(每个控制器中有一种)提供相同视图?几个选项:
- 从同一基类中实现事件编辑的两个控制器的子类。因为只有基类,所以这只能工作一次。如果我有其他共享功能,这应该全部进入基类。
- 将编辑功能从两个控制器委派给另一个类(EditEventController?)
- 使用AJAX窗体,因此页面只是部分更新。这使情况复杂化。
简而言之:如何在MVC 3应用程序中的不同区域/控制器之间共享编辑页面?
@Added作为注释太小:
我使用面积对角色,因为我希望自己的网站该角色的某些观点。就像一个管理区,包含子事件/用户和所有其他管理员的东西。在这个管理区域中,我有一个eventscontroller来处理管理区域的事件部分。另一个领域是推动者的领域。它看起来像是网站的逻辑分支(因为我可以控制每个区域的布局,并且我可以使用基类控制器来要求某些角色)。你是否说这不实际?我喜欢单个事件控制器的想法,但我如何根据当前角色获得不同的布局页面/菜单?
这将如何制定出将我有一个像“/管理/事件/编辑/ 1”将映射到事件控制器网址吗?我如何找出控制器在哪个角色下被访问呢? – Gluip
@Gluip - 你可以在你的控制器上使用'[Authorize(Roles =“Admin,Promoter”)]'是你的意思吗? – RPM1984