【问题标题】:Is it possible to update a view that was created from a strongly typed model class?是否可以更新从强类型模型类创建的视图?
【发布时间】:2012-08-04 02:04:18
【问题描述】:

我在我的 MVC4 项目中基于强类型模型类创建了一个视图,它运行良好。但是,我必须向 Model 类添加一堆字段,现在我希望 View 反映这一点。最初,当我选择强类型类时,所有字段都是自动为我创建的。

我知道我可以手动去添加新的 HTML 帮助器字段,但我想知道是否有某种方法可以从它的绑定模型类中“更新”视图(即在IDE之类的“刷新视图”之类的”)。

我也知道我可以删除当前的视图并重新创建它,但我想知道如果我做了不相关的自定义,我不想删除它,是否可以使用更少的蛮力。

谢谢!

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    如果您在视图中使用 EditorForModel() 或 DisplayForModel(),它们将在您更改模型时免费更新。

    这是我发现非常有用的Brad Wilson's blog post 的链接。它是为 MVC2 编写的,但据我所知,一切仍然适用于 MVC3。

    此外,使用 EditorForModel() 时非常方便的特定数据注释是:

    [ScaffoldColumns(false)] //for properties that you don't want to display, but still need their values to post to the server(like ID's and such)
    

    【讨论】:

    • IDE 创建了EditorFor 助手而不是EditorForModel,所以我必须更改所有内容吗?
    • @atconway 单个 EditorForModel() 将有效地替换所有 Editorfor(x => x.whatever) 语句。该框架将为模型中的每个属性创建适当的输入。
    • 没错,我确实在我的 MVC 书中读到了这一点。缺点?如果我需要干预特定控件的外观或行为怎么办?所有数据注释是否足以处理差异?
    • @atconway 数据注释可以处理非常大的差异集,但是如果您愿意,您可以轻松地为编辑器编写自定义模板,并用它做几乎任何您想做的事情。我将添加一个链接,指向 Brad Wilson 就该主题撰写的一篇很棒的博文。
    • 据我所知,没有“刷新”类型的选项。
    【解决方案2】:

    我认为你做不到。您可以做的是创建一个新视图,然后使用差异工具比较两个文件并合并更改。如果您在文件中添加了一些自定义代码,那么您将不会丢失任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 2020-04-20
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多