【问题标题】:ASP.NET MVC - Single view for Edit and Read only?ASP.NET MVC - 编辑和只读的单一视图?
【发布时间】:2014-07-09 04:01:17
【问题描述】:

我们有一种情况,我们需要一个只读版本的编辑页面。这是基于权限以及基于对象的状态。我的想法是将其分离成一个全新的视图,但其他意见是将这个逻辑放在编辑视图中。

关于视图结构的一些信息:

表单元素

编辑器模板

部分视图

Kendo 控件(流畅的包装器)

所以为了完成手头的任务意味着只读功能需要存在于多个地方,并且必须通过视图数据传递给编辑器模板/部分视图。

页面上还使用了 HTML 帮助程序/扩展,这意味着也要更新这些。

最后,对于 Kendo 控件,很多网格逻辑(内嵌编辑功能)逻辑都存在于外部 JS 文件中,因此我们还有另一个地方可以修改代码。

我的问题是这方面的“最佳实践”是什么?

我们是否通过将只读视图与编辑视图分开来复制标记 (cshtml)。

或者我们是否更改编辑视图以适应只读功能?

似乎更改编辑视图会为这样一项微不足道的任务增加大量复杂性和依赖性。

【问题讨论】:

  • 不要重复自己,我认为单个视图就足够了,给cshtml参数以决定视图是只读的(或使用模型的id),并使用模型的id来决定它是否是新的项目/修改项目
  • 就我个人而言,我会打破 DRY(不要重复自己)并为两者创建一个单独的视图。我喜欢让我的观点尽可能易于理解,通过将它们分开并坚持单一职责原则,它更容易实施和维护

标签: c# asp.net asp.net-mvc asp.net-mvc-4 c#-4.0


【解决方案1】:

您可以通过在视图中使用剃须刀条件共享单个视图用于只读和可编辑元素,但如果视图内容复杂处理或元素,则管理似乎复杂,我建议您使用单独的视图并从控制器的操作发送适当的视图方法取决于您的标准。

您也可以直接使用 Html.EditorForModel 根据您的模型数据注释呈现元素,或 Html.DisplayForModel 以只读目的呈现所有模型属性。 p>

【讨论】:

  • 我也更喜欢单独的视图。随着需求的变化,逻辑可能会变得混乱,如果你不及时重构,当你尝试拆分视图时,你可能会花费数周时间来解开你的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 2014-12-10
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
相关资源
最近更新 更多