2011-02-22 15 views
6

decir que tengo un modelo de vista de este modo:asp.net mvc - valor opcional/por defecto para el campo entero

public class User 
{ 
    public int Id { get; set; } 

    [Required(ErrorMessage="Username is required")] 
    public string Username { get; set; } 

    [Range(0, 255)] 
    public int Owner { get; set; } 
} 

La página se sometió a ella es controlador donde puedo comprobar si ModelState.IsValid, sin embargo no lo hace pasar. Obviamente, el propietario es requerido. ¿Porqué es eso? Pensé que el valor predeterminado para una int no asignada era 0. Si depuro la aplicación e inspecciono el objeto que se envía al controlador, el valor es de hecho 0.

Si no quiero forzar al usuario a ingresar 0, ¿cuál es el mejor enfoque? He intentado agregar un atributo [DefaultValue (0)] a la propiedad Owner en la clase, pero no parece hacer ninguna diferencia.

Alguna orientación sería agradable, incluso si se trata de un problema tan novato o trivial para acostumbrarse al concepto.

Saludos,

Respuesta

3

¿Usted intentó hacer que el propietario int un valor nullable?

[Range(0, 255)] 
public int? Owner { get; set; } 
+0

esto no está funcionando para mí - tal vez se requiere el atributo de rango? –

0

Usted puede comprobar si es nula antes de comprobar ModelState:

if (viewModel.Owner == null) 
{ 
    viewModel.Owner = 0; 
} 

if(ModelState.IsValid) 
... 
Cuestiones relacionadas