页面需要继承2个视图模型并显示所需的模型

mai*_*979 0 asp.net-mvc asp.net-mvc-2

我有一个内容页面,很高兴显示继承contentModel.我需要更改页面,以便它还可以显示另一个viewModel(例如revertedContent),但只有在需要向其他人显示正常的contentModel时才显示它.

我确信有一个简单的方法可以做到这一点只是一个痛苦,因为我需要确保页面不会在URL中更改,例如details.aspx保持不变,但可以显示当前内容或以前版本化的内容.

提前喝彩

Rob*_*nik 6

观点应该是"愚蠢的"(并且有单一的责任)

我不认为你完全理解Asp.net MVC概念模型.视图应该是愚蠢的,并且根据需要具有同样多的逻辑.分而治之是这里的规则.因此,如果您对特定数据有两种不同的视图,那么您也可以构建两个自定义视图.

控制器应该是这里的聪明人.因此,给出意见决策的可能性并不是正确的做法.

决策几乎肯定是基于应用程序模型状态,因此由控制器决定显示哪个视图并为该特定视图提供正确的模型.

从同一控制器操作返回各种视图并不罕见.每个控制器动作应该有一个视图并不是一成不变的.这样我们就会得到代码过多的臃肿视图,从而使它们无法维护.基本上我们将整个MVC模型的关注点分开.

因此,当您想从控制器返回特定视图时,您可以在从控制器操作返回时始终提供其名称:

return View("ViewName", model);
Run Code Online (Sandbox Code Playgroud)

我建议你分析和重构你的过程.