我正在使用带有视图的MVC 5控制器,使用实体框架并自动创建,删除,详细信息,编辑,索引cshtml页面。当我更改模型类并更新数据库时,CSHTML页面不会更改。我手动删除视图页面并使用脚手架重新创建它们。当我做这些事情时,我的HTML设计被删除了。
如何自动更新aspnet-scaffolding cshtml页面?
注意:我正在使用布局页面,但他们没有解决我的问题。
答案 0 :(得分:2)
“当我执行这些操作时,我的html设置将被删除。”
以下是问题的根源。如果我理解你正确的话:
您的希望是在修改数据库之后,脚手架将更新视图。但是,当它生成新的CSHTML视图时,它如何知道如何将更改与您的自定义组合?它没有。 它无法知道如何生成全新视图并以某种方式集成您的自定义。
这与涉及代码生成的任何场景几乎相同。你必须做出选择。如果要保留编辑,则无法再使用脚手架在编辑后生成新视图。如果您希望在数据库更新后从脚手架中受益,那么您不应该编辑CSHTML以便自定义它。
我很久以前只使用脚手架作为学习工具,看看列表是如何处理的。大概两年我从来没有使用过脚手架,对于大型项目来说通常都很慢,所以我总是创建一个空的CSHTML或复制一个接近我将采用新方法的现有方法。
我会专注于其他有助于创建CSHTML的技术。
Html.LabelForBootstrap
帮助器,它输出格式化的HTML格式,以便与bootstrap类一起使用。最终,您会开始看到脚手架在许多情况下都不合适。例如。用于将一个实体与另一个实体相关联的UI,即当许多列不适合显示时显示所有列的事实等。
您可能对动态数据感兴趣。它更加面向传统,它从数据库结构中确定UI,但您提供自定义约定。总的来说,与使用自定义对象模板的MVC在概念上并没有什么不同: http://msdn.microsoft.com/en-us/library/vstudio/ee845452(v=vs.100).aspx
动态数据不是主流,你从中学到的技能可能不是很有市场。它可能仅适用于用户体验不是主要关注点的管理界面。一旦你很好地学习了MVC,你就可以很快地为新实体吐出基本用户界面,所以我不建议使用动态数据。
可以修改默认的脚手架模板。因此,如果您愿意,您可以自定义模板并让它生成您的视图。 您将很快遇到同样的问题但是,您将遇到通用模板不满足的情况,您需要自定义输出View CSHTML,但现在您无法再生成View因此脚手架模板的用途有限:
http://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx