none
Añadir mensaje personalizado a validation summary en el cliente con jquery RRS feed

  • Pregunta

  • Hola gente:

    Una pregunta de principiante. Tengo esta vista con un formulario (MVC 5), y quiero validar en el cliente un campo (me da igual el tipo de validación que sea), y añadir a validatiosummary un mensaje (el que quiera), algo asi como:

    @model OficinaVirtual.Models.Documento
    @{
     ViewBag.Title = "NUEVO DOCUMENTO";
    }

    @using (Html.BeginForm("Create","Documentos",FormMethod.Post, new { @id = "__Form", enctype = "multipart/form-data" }))
     {
        @Html.AntiForgeryToken()
        <div class="form-horizontal">
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })

            <div class="form-group">
                @Html.LabelFor(model => model.nombreDocumento, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.nombreDocumento, new { htmlAttributes = new { @class = "form-control", @id="nombreDocumento" } })
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Guardar Documento" class="btn btn-default" />
                </div>
            </div>
        </div>
    }

    @section Scripts {
     @Scripts.Render("~/bundles/jqueryval")

     <script type="text/javascript">
     $(function ()
     {
      $("#__Form").submit(function (event)
      {
       if ($("#nombreDocumento").prop("value") == "") {
        //AÑADIR EL MENSAJE QUE QUIERA A ValidationSummary
        event.preventDefault();
        return;
        }
      });

     });
     </script>
    }

    No quiero en el controlador tener que usar ModelState.AddError......, ni usar requerimientos del modelo, quiero añadir un mensaje.

    Alguien me echa una mano? Muchas gracias.

    Saludos


    Juanjo

    miércoles, 21 de octubre de 2015 14:18

Todas las respuestas

  • hola

    pero porque lo quieres implementar de esa forma

    porque no habilitas las validaciones en el cliente de las DataAnnotations y defiens esa propiedad como [Required]

     ASP.NET MVC Client Side Validation

    desde el cliente puedes validar si el form es valido

    MVC 3 - checking if form is valid (has passed client side validation)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 21 de octubre de 2015 14:33
  • Gracias por responder

    Ese método que me indicas lo conocía, pero para mostrar un simple mensaje no me gustaría tener que usar este método y tampoco me gustaría usarlo en el controlador sobre todo si tengo un campo file.

    A parte, eso era un simple ejemplo, pero en mi pagina uso EF y cada vez que actualizo el modelo, todos los mensajes, validaciones, etc. se borran y es una pesadez cada dos por tres estar escribiendo todo de nuevo.

    Saludos


    Juanjo

    miércoles, 21 de octubre de 2015 21:56
  • >>pero para mostrar un simple mensaje no me gustaría tener que usar este método

    porque ? la idea es estandarizar la forma en como defines las validaciones

    >>pero en mi pagina uso EF y cada vez que actualizo el modelo, todos los mensajes, validaciones, etc. se borran y es una pesadez cada dos por tres estar escribiendo todo de nuevo.

    eso es porque usas la entidad como parte del modelo de la view, y eso esta mal

    se supone que debes separar la entidad que usas en el view de la entidad de persistencia de EF

    deberias crear una clase en la carpeta model de mvc con el sufijo ViewModel y mapear de la entidad de EF a la entidad viewmodel

    podrias ayudarte con automapper para esta tarea

    de esta forma si la entidad de EF se actualiza no afecta a la entidad de la view

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 21 de octubre de 2015 23:46
  • Gracias por responder.

    1. Quiero hacer este tipo de validación, por lo siguiente: Imagina una vista a la cual le añades un campo que no esta en un modelo, por ejemplo, estas tablas:

    - Categoria (id, nombre)

    - Producto (id, idCategoria, nombre)

    - lineaFactura (id,idproducto,nombre, precio)

    Y quiero hacer una vista de líneaFactura, en esa vista quiero filtrar por categoría, categoría no esta relacionada con lineaFactura, pero resulta útil para filtrar que apareciera un desplegable con las categorías, y que cargaran los productos de la categoría seleccionada, para añadir el producto a una línea de la factura.

    como digo es una ejemplo, no es exactamente lo que necesito, pero aquí como "validas" el campo categoría si no pertenece al modelo? en cambio si puedes añadir un mensaje por JavaScript "tienes que elegir una categoría...." pues es sencillo. Ya entiendo que no es una validación de los datos en si, pero me sirve como ejemplo.

    Otro ejemplo, es que tengo un formulario (que no esta asociado a ninguna tabla) que coge unos datos (nombre, apellidos,etc) y genera un PDF. Esto lo he creado a partir de una vista vacia, entonces no puedo usar este método de validacion

    2. Obviamente no llevo mucho con aspx, seguire tu recomendación y lo estudiare. Puedes decirme alguna web, tuto,... ando un poco perdido.

    Saludos

     


    Juanjo


    • Editado Juanjo_16v jueves, 22 de octubre de 2015 15:11
    jueves, 22 de octubre de 2015 11:38