如何从强类型视图模型创建视图?
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 中一样从模型自动创建视图?