[英]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.