如何在剃刀视图中检查模型字符串属性是否为null



我正在开发一个ASP.NET MVC 4应用程序。我首先使用带有代码的EF 5,在我的一个实体中我有:

public string ImageName { get; set; }
public string ImageGUIDName { get; set; }

这两个属性是我实体的一部分。由于我可能没有上传图像,这些值可能为空,但当我渲染通过模型的视图时,ImageNameImageGUIDName来自数据库,作为null,我得到:

Exception Details: System.ArgumentNullException: Value cannot be null.

基本思想是根据是否有图片的事实为用户提供不同的文本:

            @if (Model.ImageName != null)
            {
                <label for="Image">Change picture</label>
            }
            else
            { 
                <label for="Image">Add picture</label>
            }

所以当上面的代码给我带来错误时,我尝试了string.IsNullOrEmpty(Model.ImageName)Model.ImageName.DefaultIfEmpty() != null,但我得到了完全相同的错误。似乎我不能仅仅将y实体属性设置为null:

public string? ImageName { get; set; } //Not working as it seems

那么我该怎么处理呢?

首先尝试Model != null!String.IsNullOrEmpty(Model.ImageName),因为您可能不仅从模型传递Null值,还传递Null模型:

@if (Model != null && !String.IsNullOrEmpty(Model.ImageName))
{
    <label for="Image">Change picture</label>
}
else
{ 
    <label for="Image">Add picture</label>
}

否则,你可以通过一些三元乐趣让它变得更整洁!-但如果您的模型为Null,则仍然会出现错误。

<label for="Image">@(String.IsNullOrEmpty(Model.ImageName) ? "Add" : "Change") picture</label>

最新更新