添加View Model类下拉列表不显示我的类

Vli*_*nce 22 asp.net-mvc visual-studio-2010

我已经创建了一个新的C#asp.net mvc 4.0(beta)Internet应用程序,我在Visual Studio 2010(sp1)的"添加视图"对话框中有一些奇怪的行为.当我决定创建强类型视图时,在"添加视图"对话框中,"模型"类下拉列表不会显示我的ViewModel类.

为了记录,是的,我在触发Add View对话框之前编译了应用程序.

我相信我已经确定了问题,但不知道如何解决它.如果有人关心重现行为,下面是重复步骤:

  1. 在Visual Studio 2010(sp1)中,创建一个新的C#asp.net MVC 4.0(beta)Internet应用程序.
  2. 在Models文件夹中,创建一个名为"GazouViewModel.cs"的新简单类
  3. 构建应用程序,打开HomeController,右键单击Index()ActionResult并选择Add View ...
  4. 在Add View对话框中,选中"强类型视图"复选框,在Model类:下拉列表中,您会注意到您的"GazouViewModel"

  1. 在解决方案资源管理器中,右键单击您的项目并选择"管理NuGet包"
  2. 搜索,查找并安装"Bootstrapper.Autofac"软件包.
  3. 重建应用程序并验证"GazouViewModel"是否仍显示在"添加视图"下拉列表对话框中.
  4. "GazouViewModel"仍应显示在下拉列表中.

  1. 在解决方案资源管理器中,右键单击您的项目并选择"管理NuGet包"
  2. 搜索,查找并安装"Autofac ASP.NET MVC4(Beta)集成"软件包.
  3. 重建应用程序并验证"GazouViewModel"是否仍显示在"添加视图"下拉列表对话框中.
  4. "GazouViewModel"仍应显示在下拉列表中.

  1. 在解决方案资源管理器中,右键单击您的项目,并在无关紧要的任何位置添加新类(Class1.cs).
  2. 使Class1实现IAutofacRegistration并实现接口.
  3. 重建应用程序并验证"GazouViewModel"是否仍显示在"添加视图"下拉列表对话框中.
  4. "GazouViewModel"不再显示在Model类下拉列表中.

看来,只要我创建一个实现IAutofacRegistration接口并构建应用程序的类,我就不再能够在该下拉列表中查看我的ViewModel.

任何人都可以确认他们是否得到与我相同的结果?更重要的是,如何解决这个问题呢?

重要提示:我已尝试使用mvc 3.0应用程序执行完全相同的步骤,并且会发生完全相同的行为...因此,这与BETA版本无关.

真诚的文斯

小智 15

如果收到错误消息:"正在运行转换:输入文件似乎使用此模板不支持的架构版本.这可能导致编译错误.请使用'添加新生成的项'添加更新的模板".

您使用的是EF 5.x. 您必须将EF 5.x的元数据添加到T4模板.在文件头中调用DefineMetadata()

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ include file="EF.Utility.CS.ttinclude"#><#@ output extension=".cs"#><#

DefineMetadata();
Run Code Online (Sandbox Code Playgroud)

在模板底部创建方法

private void DefineMetadata()
{
    TemplateMetadata[MetadataConstants.TT_TEMPLATE_NAME] = "CSharpDbContext.Types";
    TemplateMetadata[MetadataConstants.TT_TEMPLATE_VERSION] = "5.0";
    TemplateMetadata[MetadataConstants.TT_MINIMUM_ENTITY_FRAMEWORK_VERSION] = "5.0";
}
Run Code Online (Sandbox Code Playgroud)

  • 你怎么想到这个?+1!:d (2认同)

Sim*_*ngø 9

我在2个小时内疯狂地解决了这个问题,然后从解决方案中的Properties-folder中删除了Assembly.cs.在我重新构建解决方案之后,"Add-view"模型 - 下拉突然显示可以找到我所有的ViewModel,这很奇怪.

我想Assembly.cs中定义的程序集版本在某种程度上与项目中使用的实际版本混在一起.无论如何,它现在适用于我的情况.

  • 只是重建对我来说很完美,不需要删除Assembly.cs! (4认同)

Vli*_*nce 1

更新:截至撰写本文时,我无法再重现该错误。也许我使用的 NuGet 包已更新到较新的版本并顺便修复了错误。

\n\n

我会将这篇文章标记为已关闭。

\n\n

感谢大家\xe2\x80\x99s对此的投入!

\n\n

文斯

\n