none
Como validar solo numeros y solo letras mayusculas con EditorFor RRS feed

  • Pregunta

  • Buenas.

    Tengo un campo string Codi que me permita solo ingresar numeros y tambien un campo Desc que es string 
    tambien y que solo me permita ingresar letras Mayusculas con EditorFor. Lineas abajo esta mi modelo
    y la vista respectiva.

    Espero su ayuda.

    Gracias.


    MODELO

         public class Prueba
         {
          [Key]
          public int ID { get; set; }
          [Display(Name = "CODIGO")]
          [Required(ErrorMessage = "El {0} es obligatorio")]
          [StringLength(2, MinimumLength = 2, ErrorMessage = "El Campo {0} debe tener una longitud de {1}")]
          [Range(01, 99, ErrorMessage = "El Campo {0} debe ser un numero entre 01 y {2}")]        
          public string Codi { get; set; }
          [Display(Name = "DESCRIPCION")]
          [Required]
          [StringLength(15)]
          public string Desc { get; set; }
         }

    VISTA

    @model RecordGeneral.Models.Prueba

    @{
        ViewBag.Title = "Create";
    }

    <h2>Adicionar</h2>


    @using (Html.BeginForm()) 
    {
        @Html.AntiForgeryToken()

        <div class="form-horizontal">
            <h4>PRUEBA</h4>
            <hr />
            @Html.ValidationSummary(true)

            <div class="form-group">
                @Html.LabelFor(model => model.Codi, new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Codi)
                    @Html.ValidationMessageFor(model => model.Codi)
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Desc, new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Desc)
                    @Html.ValidationMessageFor(model => model.Desc)
                </div>
            </div>
        


    jueves, 9 de febrero de 2017 23:06

Respuestas

  • Hola jgbaz,

    Porque tu campo 'Codi' permite solo números y es de tipo String ? Debería ser de tipo int, en caso lo necesites como cadena lo conviertes al momento de usarlo asignándo el ToString().

    Puedes ayudarte usando el atributo RegularExpression para aplicar un pattern y validar la info ingresada.

    [Display(Name = "CODIGO")]
    [Required(ErrorMessage = "El {0} es obligatorio")]
    [RegularExpression("^[0-9]*$", ErrorMessage = "* Solo se permiten números.")]
    [Range(01, 99, ErrorMessage = "El Campo {0} debe ser un numero entre 01 y {2}")]
    public int Codi { get; set; }
    
    [Display(Name = "DESCRIPCION")]
    [Required]
    [StringLength(15)]
    [RegularExpression("^[A-ZÑÁÉÍÓÚ]+$", ErrorMessage = "* .. solo letras mayúsculas")]
    public string Desc { get; set; }

    El campo 'Desc' acepta valores de la 'A' a la 'Z' (mayúsculas) incluyendo las vocales en tílde, en caso no requieras esta última tendrías que usar :

    [RegularExpression("^[A-Z]+$",

    Ten en cuenta que no te permitirá ingresar espacios, en caso lo requieras agregarías un espacio en el pattern.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta jgbaz lunes, 20 de febrero de 2017 21:51
    viernes, 10 de febrero de 2017 1:50

Todas las respuestas

  • Hola jgbaz,

    Porque tu campo 'Codi' permite solo números y es de tipo String ? Debería ser de tipo int, en caso lo necesites como cadena lo conviertes al momento de usarlo asignándo el ToString().

    Puedes ayudarte usando el atributo RegularExpression para aplicar un pattern y validar la info ingresada.

    [Display(Name = "CODIGO")]
    [Required(ErrorMessage = "El {0} es obligatorio")]
    [RegularExpression("^[0-9]*$", ErrorMessage = "* Solo se permiten números.")]
    [Range(01, 99, ErrorMessage = "El Campo {0} debe ser un numero entre 01 y {2}")]
    public int Codi { get; set; }
    
    [Display(Name = "DESCRIPCION")]
    [Required]
    [StringLength(15)]
    [RegularExpression("^[A-ZÑÁÉÍÓÚ]+$", ErrorMessage = "* .. solo letras mayúsculas")]
    public string Desc { get; set; }

    El campo 'Desc' acepta valores de la 'A' a la 'Z' (mayúsculas) incluyendo las vocales en tílde, en caso no requieras esta última tendrías que usar :

    [RegularExpression("^[A-Z]+$",

    Ten en cuenta que no te permitirá ingresar espacios, en caso lo requieras agregarías un espacio en el pattern.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta jgbaz lunes, 20 de febrero de 2017 21:51
    viernes, 10 de febrero de 2017 1:50
  • hola

    >>Tengo un campo string Codi que me permita solo ingresar numeros

    pero si solo permite numeros porque lo defines como string, lo correcto seria

    public int Codi { get; set; }

    define el tipo de dato de forma correcta

    Tambien recomendaria evalues usar las extensiones

    http://dataannotationsextensions.org/

    como veras esta el IntegerAttributes que podria ayudar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 10 de febrero de 2017 21:13