Foro

error de validación

0
Hola soy nueva en esto de Extjs y tengo algunos problemas para validar mis campos tengo conflictos entre el maxValue y los mensajes que quiero que me mande si introduzco algun dato mal.
Este es mi codigo de mi archivo js: 
MainLayout = function () {    return {        init: function () {            Ext.BLANK_IMAGE_URL = BLANK_IMAGE_URL;            Ext.QuickTips.init();            this.initLayout();        },
        initLayout: function () {
            var Correo = new Ext.form.TextField({                id: 'Correo',                name: 'Correo',                allowBlank: false,                fieldLabel: 'Correo',                width: 200,                maxLength: 250,                vtype: 'multiemail',                vtypeText: 'Solo acepta correos'            });
            var Porciento = new Ext.form.NumberField({                id: 'Porcentaje',                name: 'Porcentaje',                allowBlank: false,                fieldLabel: 'Porcentaje de aumento',                allowDecimals: true,                allowNegative: true,                vtype: 'numeros',                maxValue: 100            });
            var Periodo = new Ext.form.NumberField({                id: 'periodo',                name: 'Periodo',                allowBlank: false,                fieldLabel: 'Periodo de Mes',                allowDecimals: false,                minValue: 1,                maxValue: 48            });
            var Factor = new Ext.form.NumberField({                id: 'factor',                name: 'Factor',                allowBlank: false,                fieldLabel: 'Factor',                allowDecimals: true,                decimalPrecision: 2,                minValue: 1            });
            var CorreoMultiset = new Ext.form.FieldSet({                items: [Correo, Porciento, Periodo, Factor]            });
            var boton1 = new Ext.Button({                text: 'cargar',                handler: function () {                    multiCorreo.getForm().submit({                        url: VIRTUAL_DIRECTORY + 'MultiCorreo/Datos',                        success: function (response, action) {                            var result = Ext.decode(action.response.responseText);                            if (result.success) {                                alert(result.msgbien);                            } else {                                alert(result.msg);                            }                        }                        ,                        failure: function (response, action) {                            var error = Ext.decode(action.response.responseText);                            alert(error.msg);                        }                    });                }            });
            var multiCorreo = new Ext.form.FormPanel({                id: 'multiCorreo',                name: 'multiCorreo',                frame: true,                title: 'MultiCorreo',                allowBlank: true,                items: [CorreoMultiset, boton1]            });
            var view = new Ext.Viewport({                id: 'principal',                defaults: {                    border: false                },                layout: 'fit',                items: [multiCorreo]            });        }    }} ();Ext.EventManager.onDocumentReady(MainLayout.init, MainLayout, true); 

Este es el de mi metodo JSON: 

 public JsonResult Datos(string Correo, decimal Porcentaje, int Periodo, decimal Factor)        {            bool success = true;            try            {                if (success == true)                {                    return Json(new                    {                        success = true,                        msgbien = "Datos obtenidos correctamente"
                    });                }                else                {                    return Json(new                    {                        success = false,                        msg = "Verifique que los datos sean correctos"                    });                }            }            catch (Exception e)            {                return Json(new { success = false, error = e.Message});            }        }

y me presenta un error en lugar de mandarme el mensaje de que algun dato esta mal me envia este error: 
TypeError: action.response is undefined
var error = Ext.decode(action.response.responseText);
espero alguien pueda ayudarme gracias
0
El error te está diciendo que action.response no existe, intenta sacar el error de la siguiente manera:
var error = action.result.error;

 Saludos

Claudia Lira Chávez: gracias por la ayuda ya lo hice de esa forma pero aun así no muestra el mensaje de que tengo algún campo mal y ahora ya no muestra error ni alguna otra cosa 10/10/2014
Crysfel Villa: Te recomiendo mandar un log a la consola de tu respuesta, luego revisa el objeto y asegurate de acceder correctamente a las propiedades. 10/10/2014
Claudia Lira Chávez: lo que acabo de ver me comentan que debo validar que se estén recibiendo bien los datos que recibe mi método (Correo, Porcentaje, Periodo, Factor ) y también tengo detalle en eso no se como podría realizar la validación de esos campos dentro de ese mismo método (Datos) 10/10/2014
Claudia Lira Chávez: Hola sigo con el mismo problema no puedo validar mis datos me podrian apoyar 10/10/2014
0
Este es mi codigo: 

namespace Navistar.Web.Controllers{    public class MultiCorreoController : Controller    {        public readonly ILog logger;        bool success = false; 
        public MultiCorreoController()        {            logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);            logger.Debug("MultiCorreoController");         }                public ActionResult MultiCorreo()        {            return View();        }
        public JsonResult Datos(string Correo, decimal Porcentaje, int Periodo, decimal Factor)        {            if (Correo != null && Porcentaje < 100 && Periodo > 0 && Periodo < 49 && Factor > 1)            {                success = true;            }            else            {                return Json(new { success = false, msgmal = "Verifique que los datos sean correctos" });            }                            if (success == true)            {                try                {                    return Json(new                    {                        success = true,                        msgbien = "Datos obtenidos correctamente"                    });                }                catch (Exception e)                {                    return Json(new { error = e.Message });                }            }else{                return Json(new {success = false, sistema = "ERROR DE SISTEMA"} );            }        }    }}



/// <reference path="../../vswd-ext_2.2.js" />
MainLayout = function () {    return {        init: function () {            Ext.BLANK_IMAGE_URL = BLANK_IMAGE_URL;            Ext.QuickTips.init();            this.initLayout();        },
        initLayout: function () {
            var Correo = new Ext.form.TextField({                id: 'Correo',                name: 'Correo',                allowBlank: false,                fieldLabel: 'Correo',                width: 200,                maxLength: 250,                vtype: 'multiemail',                vtypeText: 'Introduzca solo correo(s)'            });
            var Porciento = new Ext.form.NumberField({                id: 'Porcentaje',                name: 'Porcentaje',                allowBlank: false,                fieldLabel: 'Porcentaje de aumento',                allowDecimals: true,                allowNegative: true,                maxValue: 100,                vtypeText: 'El valor maximo es de 100'            });
            var Periodo = new Ext.form.NumberField({                id: 'Periodo',                name: 'Periodo',                allowBlank: false,                fieldLabel: 'Periodo de Mes',                allowDecimals: false,                vtypeText: 'Acepta valores entre 1 y 48',                minValue: 1,                maxValue: 48            });
            var Factor = new Ext.form.NumberField({                id: 'factor',                name: 'Factor',                allowBlank: false,                fieldLabel: 'Factor',                allowDecimals: true,                decimalPrecision: 2,                vtypeText: 'El valor minimo es 1',                minValue: 1            });
            var CorreoMultiset = new Ext.form.FieldSet({                items: [Correo, Porciento, Periodo, Factor]            });
            var boton1 = new Ext.Button({                text: 'cargar',                handler: function () {                    multiCorreo.getForm().submit({                        url: VIRTUAL_DIRECTORY + 'MultiCorreo/Datos',                        success: function (response, action) {                            var result = Ext.decode(action.response.responseText);                            if (result.success = true) {                                alert(result.msgbien);                            }                        },                        failure: function (response, action) {                            var error = Ext.decode(action.response.responseText);                            alert(error.msgmal);                        }                    });                }            });
            var multiCorreo = new Ext.form.FormPanel({                id: 'multiCorreo',                name: 'multiCorreo',                frame: true,                title: 'MultiCorreo',                allowBlank: true,                items: [CorreoMultiset, boton1]            });

            var view = new Ext.Viewport({                id: 'principal',                defaults: {                    border: false                },                layout: 'fit',                items: [multiCorreo]            });        }    }} ();
Ext.EventManager.onDocumentReady(MainLayout.init, MainLayout, true);


Crysfel Villa: Es un poco complicado leer el código sin formato, difícil porder ayudarte así xD 16/10/2014
Jesús Méndez: tampoco lo entiendo :( 16/10/2014

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.