在剃刀视图中检查null

时间:2018-01-01 14:52:35

标签: c# razor

我将此视图模型发送到视图:

@foreach (var item in Model)
{
    <li>
        @item.Title (@item.Products.Count) // this causes problems if num of products = 0.
        <ul>
            @Html.Partial("_CategoryRecursive.cshtml", item.Children)
        </ul>
    </li>
}

这是(部分)视图:

{{1}}

有时,产品类别没有任何产品,当我尝试计算它们时会导致空引用异常。我该如何检查?

2 个答案:

答案 0 :(得分:2)

View Models的一大好处是它们特别为View保存数据。我们经常包含其他只读属性,以支持在视图中更轻松地处理。

示例,在视图模型中添加如下属性:

public string ProductCountInfo
{
    get
    {
        return Products != null && Products.Any() ? Products.Count().ToString() : "none";
    }
}

在视图中,您可以这样做:

@item.Title (@item.ProductCountInfo)

这样可以使您的视图简洁明了。

修改

删除了“C#6”版本的财产,无论如何都无关紧要

答案 1 :(得分:1)

试试这个;

@item.Title (@(item.Products != null ? item.Products.Count.ToString() : "No products"))

或者您可以?.或更高版本使用C# 6运算符

@item.Title (@(item.Products?.Count.ToString() ?? "No products"))