繁体   English   中英

在剃刀视图中检查是否为空

[英]Check for null in razor view

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

public class ViewModelProductCategory
{
    public int Id { get; set; }
    public int? ParentId { get; set; }
    public string Title { get; set; }
    public int SortOrder { get; set; }
    public IEnumerable<ViewModelProductCategory> Children { get; set; }
    public List<ViewModelProduct> Products { get; set; }
    public List<ViewModelProduct> OrphanProducts { get; set; }
}

这是(部分)视图:

@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>
}

有时一个产品类别没有任何产品,当我尝试对它们进行计数时,这会导致一个空的引用异常。 我该如何检查?

视图模型的一大优点是它们保存数据,尤其是用于视图的数据。 我们通常会包含其他只读属性,以支持在View中更轻松地处理。

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

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

在视图中,您只需执行以下操作:

@item.Title (@item.ProductCountInfo)

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

编辑

删除了属性的“ C#6”版本,无论如何都没关系

像这样尝试;

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM