2011-12-09 22 views
9

He intentado usar! Model.Any() no funciona, ya que el modelo no tiene extensión Any. ¿Cómo resolver? Aquí está mi fragmento de código.Navaja MVC3: cómo comprobar si el modelo está vacío

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

Respuesta

23

Me suena como que está instanciar el modelo, pero desea comprobar y ver si ha sido poblada.

Mi forma estándar de hacer esto es crear una propiedad bool llamada Empty, solo dando un get, y luego devolver el cheque que necesita ver si no se han establecido otras propiedades.

Digamos que tiene una clase de cliente como su modelo:

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));   
      } 
    } 
} 

En su modelo, sólo tiene que llamar:

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

+1 eso es muy bueno –

+0

mccow002 ... ¡eso es una gran pista! ¡Muchas gracias! – MagB

+0

primera línea de script da la advertencia "Esperado ';'". –

9

¿qué tal esto:

if(Model == null) 
{ 
} 
+3

@if (Model == null) no funciona. – MagB

+1

, entonces su modelo no está vacío. Debug it, ver por qué no está vacío. –

+6

Vacío! = Nulo. Una colección vacía sigue siendo una colección. –

9

Usted puede intentar esto:

@if (Model.Count == 0) 
{ 

} 
+0

@if (Model.Count() == 0) falta() después de Count – Eric

0

I tuvo el mismo problema No sé si importa, pero uso MVC5. Olvidé enviar algo desde el controlador a la vista. Desde que puse "return View (myList);" en mi controlador, método. Cualquier() funciona bien.

Cuestiones relacionadas