Asp.net mvc 我换了我的模型。这与观点相符吗?

Asp.net mvc 我换了我的模型。这与观点相符吗?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我已经改变了我原来的MVC4模型。我删除了一个对象,对另一个对象重命名并添加了属性 在我的应用程序\u Start()中,我需要更新我的数据库: Database.SetInitializer(new DropCreateDatabaseIfModelChanges<myDB>()); public class IntranetAdsDBInitializer : DropCreateDatabaseIfModelChanges<myDB> { protecte

我已经改变了我原来的MVC4模型。我删除了一个对象,对另一个对象重命名并添加了属性

在我的
应用程序\u Start()
中,我需要更新我的数据库:

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

public class IntranetAdsDBInitializer : DropCreateDatabaseIfModelChanges<myDB>
{
    protected override void Seed(myDB_context)
    {
        base.Seed(context);
    }
}
Database.SetInitializer(新的DropCreateDatabaseIfModelChanges());
公共类IntranetAdsDBInitializer:DropCreateDatabaseIfModelChanges
{
受保护的覆盖无效种子(myDB_上下文)
{
种子(上下文);
}
}
我重新构建了项目并运行了它,现在我的数据库反映了这些更改。太好了


但现在我只剩下所有其他文件(视图、控制器)了,它们仍然引用原始模型。有没有一种方法可以让我的更改自动重新构建脚手架,或者我必须手动完成所有操作?

您仍然需要手动完成,但您至少可以使用MVC脚手架包重新构建脚手架,只需遵循以下系列文章即可。在PackageManager控制台中,只需一行命令即可重新构建视图

或者,您可以重新编写视图以使用
DisplayForModel
EditorForModel
帮助程序,这些帮助程序适用于传递到视图中的整个模型。例如,您的详细信息视图可以是一行:

@Html.DisplayForModel()

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

您仍然需要手动执行此操作,但您至少可以使用MVC Scaffolding软件包重新构建模板,只需按照中的以下系列文章进行操作。在PackageManager控制台中,只需一行命令即可重新构建视图

或者,您可以重新编写视图以使用
DisplayForModel
EditorForModel
帮助程序,这些帮助程序适用于传递到视图中的整个模型。例如,您的详细信息视图可以是一行:

@Html.DisplayForModel()

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

Tallmaris所说的是正确的。您也可以使用。它会自动为您生成相当复杂的表单帮助程序,它们会随着您的模型而发展,因此需要重新构建(这显然会丢失您所做的任何自定义更改)

这是一个更高级的编辑模型,有一些提示


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

Tallmaris所说的是正确的。您也可以使用。它会自动为您生成相当复杂的表单帮助程序,它们会随着您的模型而发展,因此需要重新构建(这显然会丢失您所做的任何自定义更改)

这是一个更高级的编辑模型,有一些提示


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

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

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