如何从强类型视图模型创建视图?

Posted

技术标签:

【中文标题】如何从强类型视图模型创建视图?【英文标题】:How to create a View from a Strongly Typed ViewModel? 【发布时间】:2012-08-01 19:52:12 【问题描述】:

我开始使用 ViewModels 创建自定义视图,这些视图代表 MVC4 中的几个底层 EF 实体。我在我的 MVC 项目中创建了一个名为“ViewModels”的文件夹,并将我的类放在该文件夹中。我想要做的是基于强类型 ViewModel 类创建一个 new 视图。但是,在 ASP.NET MVC 中使用 “创建强类型视图” 选项和随后的 “模型类” 下拉选择 创建视图时显示的向导不 包含我的 ViewModel 类。列出的唯一类是我的实体框架模型中的类。

如何根据我创建的 ViewModel 类创建视图,或者更确切地说,如何让它显示在该模型类列表中?

谢谢!

【问题讨论】:

您可能需要编译 MVC 项目,然后新的 ViewModel 类才会显示在该下拉列表中。 @JohnW - 你是 100% 正确的。我不是典型的让那个超级尝试一些东西而不重新构建。您的建议不是评论,而是真正的答案。重新发布作为答案,我会这样做。谢谢。 【参考方案1】:

您需要先编译 MVC 项目,然后新的 ViewModel 类才会显示在该下拉列表中。

【讨论】:

【参考方案2】:

默认情况下,向导将在 Model DropDown 中显示除控制器文件(以 Controller.cs 结尾)之外的所有 Class file 名称

只需创建一个新的普通视图,然后将其添加为视图文件的第一行

@model YourViewModelClassName

假设 YourViewModelClassName 是您为 ViewModel 创建的类的名称。

ex : 如果您有这样的客户视图模型

public class CustomerViewModel

  public string Name set;get;

所以视图应该是这样的

@model CustomerViewModel
<p>Your view content can go here</p>

如果您的类 ViewModel 类驻留在命名空间中,则需要指定完全限定的类名

@model MyNameSpaceName.CustomerViewModel

假设 MyNameSpaceName 是这个类所在的命名空间的名称

【讨论】:

以上是关于如何从强类型视图模型创建视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用两个表中的数据创建视图

如何像在 Django admin 中一样从模型自动创建视图?

如何使用 Swift 创建底部表单样式模型视图控制器?

如何在 ASP.NET MVC 3 中为填充的下拉列表创建视图模型

如何修复局部视图的视图模型

为啥 Android 需要视图模型工厂?