web-dev-qa-db-fra.com

Comment vérifier la propriété null de la chaîne de modèle pour une vue rasoir

Je travaille sur une application ASP.NET MVC 4. J'utilise EF 5 Avec le code en premier et dans l'une de mes entités, j'ai:

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

ces deux propriétés qui font partie de mon entité. Comme je n'ai peut-être pas d'image téléchargée, ces valeurs peuvent être nulles mais lorsque je rends la vue en transmettant le modèle avec ImageName et ImageGUIDName venant comme null de la base de données, j'obtiens ceci:

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

L'idée de base est de fournir un texte différent à l'utilisateur en fonction du fait qu'il y ait ou non une image:

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

Donc, quand le code ci-dessus m'a généré cette erreur, j'ai essayé avec string.IsNullOrEmpty(Model.ImageName) et aussi Model.ImageName.DefaultIfEmpty() != null, mais j'ai eu exactement la même erreur. Il semble que je ne peux pas simplement définir la propriété d'entité y comme pouvant être annulée:

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

Alors, comment puis-je gérer cela?

28
Leron

Essayez ceci en premier, vous passez peut-être un modèle nul:

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

Si vous modifiez votre modèle, vous pouvez le rendre encore plus propre avec quelque amusement ternaire! -, mais cela entraînera toujours une erreur si votre modèle est Null.

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