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

时间:2013-12-05 19:13:16

标签: c# entity-framework asp.net-mvc-4 razor

我正在处理ASP.NET MVC 4申请。我首先使用EF 5代码,然后在我的一个实体中使用:

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

这两个属性是我的实体的一部分。由于我可能没有上传图像,因此这些值可以为null但是当我从数据库渲染通过模型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实体属性设置为可空:

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

那我怎么处理这个?

1 个答案:

答案 0 :(得分:58)

首先尝试这个,你可能会传递一个空模型:

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

其他方面,你可以用一些ternary fun!使它更整洁 - 但如果你的模型是空的,那仍然会出错。

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