这是我的模特
public class Product
{
[Key]
public int SerialNumber { get; set; }
public int PartNumber { get; set; }
public string Description { get; set; }
public virtual ICollection<Reading> Reading { get; set; }
}
public class Reading
{
[Key]
public int Id { get; set; }
public int SerialNumber { get; set; }
public int ReadingValue { get; set; }
public virtual Product Product { get; set; }
}
我可以使用
将所有产品发送到视图 return View(db.Products.ToList().Where(product => product.CustomerID == Customer));
如果我知道Product SerialNumber
,我可以获得最新的ReadingValue var LatestReading = db.Readings.OrderByDescending(m => m.Id).Where(s => s.SerialNumber == SerialNumber).Select(m => m.ReadingValue).FirstOrDefault();
如何使用每种产品的最新ReadingValue将所有产品发送到视图?
答案 0 :(得分:0)
创建一个包含两个数据的新视图模型:
public class FooViewModel
{
public List<Product> Products { get; set; }
public Reading LatestReading { get; set; }
}
更改您的视图以使用新模型:
@model FooViewModel
然后将它们发送回控制器:
var model = new FooViewModel();
model.Products = db.Products.ToList().Where(product => product.CustomerID == Customer);
model.LatestReading = db.Readings.OrderByDescending(m => m.Id).Where(s => s.SerialNumber == SerialNumber).Select(m => m.ReadingValue).FirstOrDefault();
return View(model);
答案 1 :(得分:0)
因为Reading
课程中有Products
属性,您可以在视图中获取最新的ReadingValue:
foreach(Product product in Model)
{
var latestReadingValue = product.Reading.OrderByDescendin(m => m.Id).FirstOrDefault();
// do what you want here
}
但正如hutchonoid所指出的更好的选择是为它创建一个ViewModel,因为在视图中使用逻辑是一种不好的做法,并且它与MVC模式不对应。