How to check model string property for null in a razor view
asp.net-mvc-4, c#, entity-framework, razor
Solution
Try both `Model != null` and `!String.IsNullOrEmpty(Model.ImageName)` first, as you may be passing not only a Null value from the Model but also a Null Model:
@if (Model != null && !String.IsNullOrEmpty(Model.ImageName))
{
<label for="Image">Change picture</label>
}
else
{
<label for="Image">Add picture</label>
}
Otherwise, you can make it even neater with some ternary fun! - but that will still error if your model is Null.
<label for="Image">@(String.IsNullOrEmpty(Model.ImageName) ? "Add" : "Change") picture</label>
Problem
I am working on an `ASP.NET MVC 4` application. I use `EF 5` with code first and in one of my entities I have : ``` public string ImageName { get; set; } public string ImageGUIDName { get; set; } ``` those two properties which are part of my entity. Since I may not have image uploaded these values can be null but when I render the view passing the model with `ImageName` and `ImageGUIDName` coming as `null` from the database I get this : `Exception Details: System.ArgumentNullException: Value cannot be null.` The basic idea is to provide different text for the user based on the fact if there is picture or not: ``` @if (Model.ImageName != null) { <label for="Image">Change picture</label> } else { <label for="Image">Add picture</label> } ``` So when the above code got me that error I tried with `string.IsNullOrEmpty(Model.ImageName)` and also `Model.ImageName.DefaultIfEmpty() != null` but I got the exact same error. It seems that I can not just set y entity property as nullable: ``` public string? ImageName { get; set; } //Not working as it seems ``` So how can I deal with this?