0

我想知道在多个屏幕使用的部分视图组件上切换可见性的正确方法是什么。

例如:如果ItemOrder实体有这些字段,并且对应的编辑视图有 3 个输入字段:

  • 费用 - (仅可在页面 A 上编辑)
  • 数量 - (不在页面 B 上显示)
  • 颜色 - (在页面 C 上显示为禁用)

并假设这 3 个页面的控制器每个都有自己的模型作为根,例如:

  • 页面模型
    • 项目订单
  • 页面模型
    • 项目订单
  • PageC模型
    • 项目订单

我怎样才能最好地控制这些页面中的这些视图模式?

想到的选项是:

  • View 模型包装了ItemOrder实体,并具有 IsPriceEditable、IsColourEditEnabled 等属性?这些在控制器中设置。
  • 一个ItemOrderViewOptions类被插入到 ViewBag 中,并由每个控制器负责插入。

有关执行此操作的标准/推荐方式的任何建议吗?

4

1 回答 1

1

看看你可以用 EditorTemplates 做什么,我做了一些类似的事情:

为每个具体类型创建一个 EditorTemplate,即:

/EditorTemplates/PageAModel.cshtml
/EditorTemplates/PageBModel.cshtml
/EditorTemplates/PageCModel.cshtml

在这些中,您可以根据需要显式控制您的输入字段,因为每个模板将仅用于该具体类型。正如您所指定的:

  • 费用 - (仅可在页面 A 上编辑)
  • 数量 - (不在页面 B 上显示)
  • 颜色 - (在页面 C 上显示为禁用)

然后从一个公共页面或单独的页面(如你所愿)只需调用:

@Html.EditorFor(m => m.ThePageModel)

它应该呈现您在 EditorTemplates 中为该类类型定义的表单。

于 2013-05-28T22:45:52.430 回答