访问MVC2.0视图中的viewmodel数据

时间:2010-06-07 10:36:15

标签: asp.net-mvc asp.net-mvc-2

我正在开发我的第一个ASP.NET MVC 2.0应用程序,并意识到我仍然对管理视图的最佳方式感到困惑。

对于调试,我想快速将几个模型类中的数据转储到一个视图中。我创建了一个viewmodel类,它将数据组合成一个对象。

   public class DBViewModel {

        public IQueryable<ClassAModel> class_a_list{ get; private set; }
        public IQueryable<ClassBModel> class_b_list { get; private set; }

        public DBViewModel(IRepository rep) {
            class_a_list = rep.FindAllClassA();
            class_b_list = rep.FindAllClassB();
        }
    }

接下来,我设置一个控制器操作来填充ViewModel对象并调用视图。

 public ActionResult Foo() {
     [...]
     return View(new DBViewModel(rep));
 }

现在的问题是如何设置视图。我可以迭代每个模型类的对象,但我非常希望避免手动列出每个类的所有列。毕竟我仍处于充实模型的早期阶段,我预计模式会经常变化。如果View能够以编程方式处理这些架构更改,那将会很棒,而且据我所知,视图模板应该就是这样做的。

基本上,我正在寻找的是这个(无效的)片段的内容:

<% foreach (var a in Model.class_a_list) { %>
   <p><%= Html.DisplayForModel(user) %></p>      
<% } %>

<% foreach (var b in Model.class_b_list) { %>
   <p><%: b.ToString() %></p>      
<% } %>

那么,视图应该如何正确调用模型数据?

谢谢!

1 个答案:

答案 0 :(得分:0)

查看aspx文件的顶部。您应该看到如下行:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

将其更改为:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewPage<MyNamespace.OtherNamespace.DBViewModel>" %>

(显然,替换正确的命名空间。

现在你的代码应该“正常工作。”

相关问题