如何将匿名类型传递给asp.net mvc 2视图?

如何将匿名类型传递给asp.net mvc 2视图?,asp.net,Asp.net,我正在学习asp.net mvc 2,但我有一个问题,我无法将匿名类型传递给视图。 代码如下: DBDataContext db = new DBDataContext(); var gca = from x in db.tbl_controllers select new { x, tblAction = (from y

我正在学习asp.net mvc 2,但我有一个问题,我无法将匿名类型传递给视图。 代码如下:

DBDataContext db = new DBDataContext();
        var gca = from x in db.tbl_controllers
                  select new
                  {
                      x,
                      tblAction = (from y in db.tbl_actions
                                   select new
                                   {
                                       y,
                                       visible = (from z in db.tbl_controller_actions
                                                  where z.actionId == x.id && z.controllerId == y.id
                                                  select z).Single<tbl_controller_action>() == null ? false : true,
                                       isExisted = (from t in db.tbl_group_controller_actions
                                                    where t.groupId == id && t.controllerId == x.id && t.actionId == y.id
                                                    select t).Single<tbl_group_controller_action>() == null ? false : true
                                   }),
                  };
DBDataContext db=newdbdatacontext();
var gca=从x到db.tbl\u控制器
选择新的
{
x,,
tblAction=(从db.tbl_动作中的y开始)
选择新的
{
Y
可见=(从db.tbl_控制器_动作中的z开始)
其中z.actionId==x.id&&z.controllerId==y.id
选择z).Single()==null?false:true,
isExisted=(来自db.tbl\u组\u控制器\u操作中的t
其中t.groupId==id&&t.controllerId==x.id&&t.actionId==y.id
选择t).Single()==null?false:true
}),
};
如何将gca传递给视图?
非常感谢。

假设控制器中有上述内容

最后你可以写

return View(gca);
编辑

因为返回类型是一个列表,所以您可以像

Inherits="System.Web.Mvc.ViewPage<IEnumerable<TestMVC4.Models.tbl_controllers>>"
Inherits=“System.Web.Mvc.ViewPage”
在你看来 您可以将每个项解析为

<% foreach (var item in Model)
   { 
..
item.<yourproperty>
..
}
%>

我已经解决了我的问题。但这可能不是最好的答案: 我创建了一个要从控制器返回的对象:

public class GroupViewDetail
{
    public tbl_group GroupDB { get; set; }
    public List<GroupViewRow> GVRow { get; set; }
    public List<tbl_action> ListActionDB { get; set; }
    public class GroupViewRow
    {
        public tbl_controller ControllerDB { get; set; }
        public List<SubGroupViewRow> SubGVRow { get; set; }
        public class SubGroupViewRow
        {
            public tbl_action ActionDB { get; set; }
            public bool IsVisible { get; set; }
            public bool IsExisted { get; set; }
        }
    }
}
公共类GroupViewDetail
{
公共tbl_组GroupDB{get;set;}
公共列表行{get;set;}
公共列表ListActionDB{get;set;}
公共类GroupViewRow
{
公共tbl_控制器ControllerDB{get;set;}
公共列表子行{get;set;}
公共类子视图行
{
公共tbl_操作ActionDB{get;set;}
公共布尔值可见{get;set;}
公共布尔存在{get;set;}
}
}
}
然后,在控制器中,我执行以下操作:

DBDataContext db = new DBDataContext();
        GroupViewDetail gvd = new GroupViewDetail();
        gvd.GroupDB = db.tbl_groups.Single<tbl_group>(g => g.id == id);
        gvd.ListActionDB = (from a in db.tbl_actions select a).DefaultIfEmpty<tbl_action>().ToList<tbl_action>();
        gvd.GVRow = new List<GroupViewDetail.GroupViewRow>();
        foreach (tbl_controller c in db.tbl_controllers)
        {
            GroupViewDetail.GroupViewRow gvr = new GroupViewDetail.GroupViewRow();
            gvr.ControllerDB = c;
            gvr.SubGVRow = new List<GroupViewDetail.GroupViewRow.SubGroupViewRow>();
            foreach (tbl_action a in db.tbl_actions)
            {
                GroupViewDetail.GroupViewRow.SubGroupViewRow sgvr = new GroupViewDetail.GroupViewRow.SubGroupViewRow();
                sgvr.ActionDB = a;
                sgvr.IsExisted = (from t in db.tbl_group_controller_actions
                                  where t.groupId == id && t.controllerId == c.id && t.actionId == a.id
                                  select t).DefaultIfEmpty<tbl_group_controller_action>().Single<tbl_group_controller_action>() == null ? false : true;
                sgvr.IsVisible = (from z in db.tbl_controller_actions
                                  where z.actionId == a.id && z.controllerId == c.id
                                  select z).DefaultIfEmpty<tbl_controller_action>().Single<tbl_controller_action>() == null ? false : true;
                gvr.SubGVRow.Add(sgvr);
            }
            gvd.GVRow.Add(gvr);
        }
        return View(gvd);
DBDataContext db=newdbdatacontext();
GroupViewDetail gvd=新的GroupViewDetail();
gvd.GroupDB=db.tbl_groups.Single(g=>g.id==id);
gvd.ListActionDB=(从db.tbl_操作中的a中选择a).DefaultIfEmpty().ToList();
gvd.GVRow=新列表();
foreach(数据库tbl_控制器中的tbl_控制器c)
{
GroupViewDetail.GroupViewRow gvr=新的GroupViewDetail.GroupViewRow();
gvr.ControllerDB=c;
gvr.SubGVRow=新列表();
foreach(db.tbl_操作中的tbl_操作a)
{
GroupViewDetail.GroupViewRow.SubGroupViewRow sgvr=新的GroupViewDetail.GroupViewRow.SubGroupViewRow();
sgvr.ActionDB=a;
sgvr.IsExisted=(来自db.tbl\u group\u controller\u actions中的t
其中t.groupId==id&&t.controllerId==c.id&&t.actionId==a.id
选择t).DefaultIfEmpty().Single()==null?false:true;
sgvr.IsVisible=(从db.tbl_控制器_动作中的z开始)
其中z.actionId==a.id&&z.controllerId==c.id
选择z).DefaultIfEmpty().Single()==null?false:true;
gvr.SubGVRow.Add(sgvr);
}
gvd.GVRow.Add(gvr);
}
返回视图(gvd);
最后,这是一种观点:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MasterPage.Master"
Inherits="System.Web.Mvc.ViewPage<TestMVC4.Models.Group.GroupViewDetail>" %>


但是什么是强类型视图@Hiound强类型视图坚持从控制器返回的类型应与视图的类型匹配。e、 g如果您的视图继承了=“System.Web.Mvc.ViewPage”,那么控制器应该返回MyModel@hieund为模型生成视图的简单方法是右键单击控制器操作并选择“添加视图”选项。我知道如何生成视图,但问题是我无法获取模型中的数据。如果可以的话,你能给我看看风景是什么样子吗?System.Web.Mvc.ViewPage中的MyModel到底是什么?这是我的另一个型号
System.Web.Mvc.viewPage谢谢。但是当您使用“TestMVC4.Models.tbl_controllers”时,您无法获得tblAction、visible和isExisted值。这就是我的问题。重复问题:我已经搜索并找到了它,但我仍然不明白它的意思。很抱歉我是ASP.NETMVC新手