加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 我可以传递一个匿名类型到我的ASP.NET MVC视图?

发布时间:2020-12-15 19:34:00 所属栏目:asp.Net 来源:网络整理
导读:我刚刚开始使用ASP.NET MVC,因为它是测试版。在我的代码中,我运行一个简单的LINQ to SQL查询以获取结果列表并将其传递到我的视图。这种事情: var ords = from o in db.Orders where o.OrderDate == DateTime.Today select o;return View(ords); 然而,在
我刚刚开始使用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视图,它接受一个I??Enumerable作为其视图数据,其中T由从控制器传递的内容定义,或者我必须定义一个具体类型从我的查询填充?

解决方法

你能把它传递给视图吗?是的,但您的视图不会被强烈打字。但帮助者会工作。例如:
public ActionResult Foo() {
  return View(new {Something="Hey,it worked!"});
}

//Using a normal ViewPage

<%= Html.TextBox("Something") %>

那个文本框应该呈现“嘿,它工作!作为值。

所以,你可以定义一个视图,其中T是由从控制器传递给它的内容定义的?是的,但不是在编译时明显。

想想一会儿。当你声明一个视图的模型类型,它是所以你得到视图的intellisense。这意味着类型必须在编译时确定。但问题问,我们可以确定从运行时给它的东西的类型。当然,但不是强类型保留。

你如何获得Intellisense一个你甚至不知道的类型?控制器最终可以在运行时将任何类型传递给视图。我们甚至不能分析代码和猜测,因为动作过滤器可以改变传递给视图的对象,我们知道。

我希望澄清的答案,没有混淆它更多。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读