我更改了模型。这会促进观点吗?

问题描述 投票:0回答:3

我已经更改了原始的MVC 4型号。我删除了一个对象,并将其重命名并添加了属性。

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

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

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

我重新构建了项目并运行它,现在数据库反映了所做的更改。太好了!

但是现在我剩下的所有其他文件(视图,控制器)仍然具有对原始模型的引用。有没有一种方法可以让我的更改自动重新启用,还是我必须手工做所有事情?

asp.net-mvc asp.net-mvc-4
3个回答
2
投票

您仍然必须手动进行操作,但是至少可以使用MVC-Scaffolding软件包进行重新脚手架,只需按照Steve Sanderson中的系列文章进行操作即可。在Package Manager控制台中,只需一行命令即可重新构建视图。

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

@Html.DisplayForModel()

这意味着该视图将成为复杂对象的默认显示视图,并且将自动显示所有属性...。请记住,尽管功能强大,但您仍会使用默认视图(但是可以使用模板进行覆盖)并且它不会比第一级属性更深入地导航并且会有一些限制。您可以从Brad Wilson的出色系列中阅读很多有关模板及其默认设置的信息。


1
投票

Tallmaris说的是正确的。您也可以使用FormFactory nuget pacakage。它会自动为您生成非常复杂的表单帮助程序,并且它们会随您的模型一起发展,因此需要重新安装(显然会丢失您所做的任何自定义更改)]

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.