如何将匿名类型传递给asp.net mvc 2视图?
我正在学习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
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新手