在Razor中显示匹配标准的模型字段

时间:2016-02-04 18:49:56

标签: c# html asp.net-mvc razor

在元素中的其他字段与条件匹配时,显示模型值的最佳方法是什么?例如,这是一个模型:

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()

提前致谢!

2 个答案:

答案 0 :(得分:1)

这真是一个c#问题。我建议你把这个逻辑放在其他地方,但这里就是。

@Model.Prices.FirstOrDefault( p => p.ZipCode == 12345 && p.PriceDate.Date == new DateTime(2015, 12, 1 ) )?.PriceId

答案 1 :(得分:0)

你应该在控制器中执行逻辑(这就是ModelViewController(MVC)的所有内容)。

在控制器中,您将使用过滤后的价格返回PriceModel。

您可以按照控制器中的方式过滤列表。