相关疑难解决方法(0)

MVC Razor动态模型,'object'不包含'PropertyName'的定义

使用MVC 3和Razor视图引擎.我有这个观点:

@model dynamic
@{
    var products = (List<ListItemBaseModel>)Model.Products;
    var threshold = (int)(Model.Threshold ?? 1);
    var id = Guid.NewGuid().ToString();
}
Run Code Online (Sandbox Code Playgroud)

使用此代码从另一个视图调用它:

@Html.Partial("PartialViewName", new { Products = Model, Threshold = 5 })
Run Code Online (Sandbox Code Playgroud)

在两个视图中,当我调试它们并观看模型时,它似乎包含正确的对象.当我执行代码时,我在"var products ="行上收到错误说:

'object'不包含'Products'的定义

任何人都可以向我解释为什么我会收到这个错误?再次,当我在调试模式下观察Model对象时,它看起来很好(具有2个属性:Products和Threshold)

razor asp.net-mvc-3

104
推荐指数
5
解决办法
8万
查看次数

我可以将匿名类型传递给我的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);
Run Code Online (Sandbox Code Playgroud)

但是,在我的视图中,我意识到我需要访问每个订单的客户名称.我开始使用,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);
Run Code Online (Sandbox Code Playgroud)

除了现在我的"ords"变量是一个匿名类型的IEnumerable.

是否可以以这样的方式声明ASP.NET MVC视图:它接受IEnumerable作为其视图数据,其中T由从控制器传递的内容定义,或者我是否必须定义从我的查询填充的具体类型?

asp.net-mvc

43
推荐指数
3
解决办法
4万
查看次数

标签 统计

asp.net-mvc ×1

asp.net-mvc-3 ×1

razor ×1