asp.net-mvc – 我可以传递一个匿名类型到我的ASP.NET MVC视图?
|
我刚刚开始使用ASP.NET MVC,因为它是测试版。在我的代码中,我运行一个简单的LINQ to SQL查询以获取结果列表并将其传递到我的视图。这种事情: var ords = from o in db.Orders
where o.OrderDate == DateTime.Today
select o;
return View(ords);
然而,在我的视图中,我意识到,我需要访问客户的名称为每个订单。我开始使用o.Customer.Name,但我相当确定这是为每个订单执行单独的查询(因为LINQ的延迟加载)。 减少查询数量的逻辑方法是同时选择客户名称。就像是: var ords = from o in db.Orders
from c in db.Customers
where o.OrderDate == DateTime.Today
and o.CustomerID == c.CustomerID
select new { o.OrderID,/* ... */,c.CustomerName };
return View(ords);
除了现在我的“ords”变量是一个匿名类型的IEnumerable。 是否可以声明一个ASP.NET MVC视图,它接受一个IEnumerable作为其视图数据,其中T由从控制器传递的内容定义,或者我必须定义一个具体类型从我的查询填充? 解决方法你能把它传递给视图吗?是的,但您的视图不会被强烈打字。但帮助者会工作。例如:public ActionResult Foo() {
return View(new {Something="Hey,it worked!"});
}
//Using a normal ViewPage
<%= Html.TextBox("Something") %>
那个文本框应该呈现“嘿,它工作!作为值。 所以,你可以定义一个视图,其中T是由从控制器传递给它的内容定义的?是的,但不是在编译时明显。 想想一会儿。当你声明一个视图的模型类型,它是所以你得到视图的intellisense。这意味着类型必须在编译时确定。但问题问,我们可以确定从运行时给它的东西的类型。当然,但不是强类型保留。 你如何获得Intellisense一个你甚至不知道的类型?控制器最终可以在运行时将任何类型传递给视图。我们甚至不能分析代码和猜测,因为动作过滤器可以改变传递给视图的对象,我们知道。 我希望澄清的答案,没有混淆它更多。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用带有剃刀的html选择框
- asp.net – 哪里是.ASPXAUTH cookie
- ASP.NET MVC与Webforms:替换WebForms控件
- asp.net-mvc – 如何阻止URL.Action包含参数?
- asp.net-mvc – AJAX在IIS 7.5中返回404(本地),但在其他IIS
- ASP.NET(MVC2)中%:%做了什么?
- 解决“这个操作需要IIS集成管道模式”在ASP.net MVC2
- asp.net – GridView中的工具提示
- asp.net-mvc – 使用Asp.Net MVC创建私人照片库
- ASP.NET MVC 3 ValidateRequest(false)不能使用FormCollect
