如何更新aspnet scaffolding cshtml页面

本文关键字:aspnet scaffolding cshtml 页面 更新 何更新 | 更新日期: 2023-09-27 18:20:37

我使用MVC 5控制器带视图,使用实体框架并自动创建、删除、详细信息、编辑、索引cshtml页面。当我更改模型类和更新数据库时,CSHTML页面不会更改。我正在手动删除视图页面,并用脚手架重新创建它们。当我做这些事情时,我的HTML设计会被删除。

如何自动更新aspnet scaffolding cshtml页面?

注意:我正在使用布局页面,但它们并不能解决我的问题。

如何更新aspnet scaffolding cshtml页面

"当我做这些事情时,我的html设计会被删除。"

这是问题的根源。如果我正确理解你,你就是:

  1. 使用脚手架生成视图
  2. 修改这些视图的CSHTML以自定义视图

您希望在修改数据库后,脚手架将更新视图。然而,当它生成新的CSHTML视图时,它如何知道如何将更改与您的自定义相结合?事实并非如此它不知道如何生成一个全新的视图并以某种方式集成您的自定义

这与任何涉及代码生成的场景几乎相同。你必须做出选择。如果要保留编辑,则在编辑后不能再使用脚手架生成新视图。如果你想在数据库更新后从脚手架中获益,那么你永远不应该编辑CSHTML来定制它

很久以前,我只是把脚手架作为一种学习工具,看看列表之类的东西是如何处理的。可能有两年的时间我从未使用过脚手架,而且对于较大的项目来说,它通常很慢,所以我总是创建一个空的CSHTML,或者复制一个与我将使用的新方法接近的现有CSHTML。

相反,我将专注于其他有助于简化创建CSHTML的技术。

  • 适当地使用局部视图来拉出可重用的UI元素
  • 使用自定义对象模板可以自定义DisplayFor和EditorFor之类的结果。(我个人不这么做,但我看到其他人有效地使用了它)
  • 实现了接受参数并生成符合您所遵循模式的HTML的助手。由于我使用引导程序,我创建了自己的Html.LabelForBootstrap帮助程序,例如,它输出格式化的HTML,以便与引导程序类一起使用
  • 有效使用布局页面和节

最终,你会发现脚手架在很多情况下根本不合适。例如,将一个实体与另一个实体关联的UI,当许多列不适合显示时,它显示所有列的事实,等等。

您可能对动态数据感兴趣。它更倾向于约定,因为它根据数据库结构确定UI,但您提供自定义约定。总的来说,它在概念上与使用MVC和自定义对象模板没有什么不同:http://msdn.microsoft.com/en-us/library/vstudio/ee845452(v=vs.100).aspx

动态数据不是主流,从中学习的技能可能不太有市场。它可能只适用于用户体验不是主要问题的管理界面。一旦你很好地学习了MVC,你就可以很快地为新实体吐出基本的UI,所以我不推荐使用动态数据。

可以修改默认脚手架模板。因此,如果你愿意,你可以自定义模板并让它生成你的视图但是,您很快就会遇到同样的问题,因为您会遇到一种情况,即您的通用模板无法满足要求,您需要自定义输出视图CSHTML,但现在您无法再重新生成视图,因此脚手架模板的作用有限:
http://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx