0

我改变了我原来的 MVC 4 模型。我删除了一个对象并重命名并向另一个对象添加了属性。

在我的Application_Start()我有以下更新我的数据库:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<myDB>());

public class IntranetAdsDBInitializer : DropCreateDatabaseIfModelChanges<myDB>
{
    protected override void Seed(myDB_context)
    {
        base.Seed(context);
    }
}

我重新构建了项目并运行它,我的数据库现在反映了这些变化。伟大的!

但是现在我剩下的所有其他文件(视图、控制器)仍然引用了原始模型。有没有办法让我的更改自动重新搭建,或者我必须手动完成所有操作?

4

3 回答 3

2

您仍然需要手动完成,但您至少可以使用 MVC-Scaffolding 包重新构建脚手架,只需遵循Steve Sanderson的这些系列文章即可。这将只是包管理器控制台中的一行命令来重新构建您的视图。

作为替代方案,您可以重新编写视图以使用DisplayForModelEditorForModel帮助器,它们适用于传递给视图的整个模型。例如,您的详细信息视图可以只是一行:

@Html.DisplayForModel()

这意味着该视图将是复杂对象的默认显示视图,它将自动显示所有属性...请记住,虽然功能强大,但您仍会使用默认视图(但是您可以使用模板覆盖)并且它不会比第一级属性导航更深,并且会有一些限制。您可以在Brad Wilson的精彩系列中阅读很多关于模板及其默认设置的内容。

于 2013-09-16T16:17:45.803 回答
1

Tallmaris 说的是正确的。您还可以查看使用FormFactory nuget pacakage。它会自动为您生成非常复杂的表单助手,并且它们会随着您的模型而发展,因此需要重新搭建脚手架(这显然会丢失您所做的任何自定义更改)

这是一个更高级的 EditorForModel,带有一些花里胡哨。

正如摘要所说:“因为在更新对象模型时不必更新 html”

于 2013-09-16T22:13:34.790 回答
0

最近遇到了这个问题,因为我对模型进行了重大更改,并希望快速更新视图中的 UI 代码。使用上下文菜单而不是包管理器,我使用不同的控制器名称重新搭建了脚手架,以便可以快速复制 UI 代码并将其粘贴到现有的代码主体中。有关具体步骤,请参阅此Stack Overflow 帖子(#20556183) 的答案。

于 2020-04-01T19:20:43.577 回答