在元素中的其他字段与条件匹配时,显示模型值的最佳方法是什么?例如,这是一个模型:
public class PricesModel
{
public int PriceID { get; set; }
public DateTime PriceDate { get; set; }
public int ZipCode { get; set; }
}
该类型模型的列表包含在View的ViewModel中:
public class PricesViewModel
{
public List<PricesModel> Prices { get; set; }
//Additional data
}
在View中,我们有一个这样的表:
@model PricesViewModel
<table class="table">
<tr class="info">
<th><em>Price IDs</em></th>
<th>@String.Format("{0:d MMM yyyy}", new DateTime(2015,12,1))</th>
<th>@String.Format("{0:d MMM yyyy}", new DateTime(2016,1,1)</th>
</tr>
<tr>
<th scope="row" >12345</th>
<td></td>
<td></td>
</tr>
</table>
因此,表格单元格中的条目将是:PriceDate = 2015年12月1日的PriceID和ZipCode = 12345,以及PriceDate = 2016年1月1日和ZipCode = 12345的PriceID。我看到了一些与此相关的问题使用Python,但不是Razor。我尝试过类似下面的内容,但没有一个有效:
@Model.PricesModel.PriceID.Where(i => Model.PricesModel[i].ZipCode == 12345).ToString()
提前致谢!
答案 0 :(得分:1)
这真是一个c#问题。我建议你把这个逻辑放在其他地方,但这里就是。
@Model.Prices.FirstOrDefault( p => p.ZipCode == 12345 && p.PriceDate.Date == new DateTime(2015, 12, 1 ) )?.PriceId
答案 1 :(得分:0)
你应该在控制器中执行逻辑(这就是ModelViewController(MVC)的所有内容)。
在控制器中,您将使用过滤后的价格返回PriceModel。
您可以按照控制器中的方式过滤列表。