web-dev-qa-db-fra.com

MVC3 Razor: comment vérifier si le modèle est vide

J'ai essayé d'utiliser! Model.Any (), cela ne fonctionne pas, car model n'a pas d'extension. Comment résoudre? Voici mon extrait de code.

    @model MyModel.Work
    @if ( !Model.Any() )
    {
       <script type="text/javascript">
             alert("Model empty");
       </script>
    }
    else
    {
       <script type="text/javascript">
              alert("Model exists");
       </script>
    }
9
MagB

Il me semble que vous instanciez le modèle, mais que vous souhaitez vérifier si le modèle a été rempli. 

Ma méthode habituelle consiste à créer une propriété bool appelée Empty, en donnant uniquement un get, puis à renvoyer la vérification dont vous avez besoin pour voir si aucune autre propriété n'a été définie.

Supposons que vous ayez une classe de clients comme modèle:

public class Customer
{
    public int CustomerId {get;set;}
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string Email {get;set;}

    public bool Empty
    {
        get { return (CustomerId == 0 && 
                      string.IsNullOrWhiteSpace(FirstName) &&
                      string.IsNullOrWhiteSpace(LastName) &&
                      string.IsNullOrWhiteSpace(Email));         
            }
    }
}

Maintenant, dans votre modèle, vous appelez simplement:

@model MyModel.Work
@if (Model.Empty)
{
   <script type="text/javascript">
         alert("Model empty");
   </script>
}
else
{
   <script type="text/javascript">
          alert("Model exists");
   </script>
}
26
mccow002

Vous pouvez essayer ceci:

@if (Model.Count == 0)
{

}
12
myaseedk

que dis-tu de ça: 

if(Model == null)
{
}
9
Hubert Jarema

@if(!Model.Any()){} fonctionne lorsque vous transmettez une liste de données en tant que modèle. Si vous essayez de vérifier si le modèle est vide, ce qui n'est pas une liste et peut contenir un enregistrement ou aucun, j'utilise normalement @if(Model == null)

J'espère que ça aide :)

3
Manik

J'ai eu le même problème. Je ne sais pas si c'est important, mais j'utilise MVC5. J'ai oublié d'envoyer quoi que ce soit du contrôleur à la vue. Depuis que j'ai mis "return View (myList);" Dans mon contrôleur, la méthode .Any () fonctionne bien.

0
Manog