none
Decodificar caracteres especiales desde un controlador MVC 3 RRS feed

  • Pregunta

  • Hola que tal, como les va?

    Tengo un problema que quizás es común pero no puedo resolverlo con mis conocimientos actuales.

    Problema: tengo que permitir caracteres especiales en un nombre de Oferta, por ejemplo "Oferta1&+_.;" todo eso sin las llaves es un nombre permitido, 

    function SaveOffer() {
            var parameters = "&";
    
            //Obtener valores de los datos del usuario para pasarlos como parametros
            var filters = $("td.filter input:text");
            for (var cont = 0; cont <= filters.length - 1; cont++) {
                parameters += "&" + filters[cont].id + "=" + filters[cont].value.trim();
            }
            parameters += "&typeOffer=" + $("#typeOffer").val();
            
            var display = $('#status').css('display');
            if (display == 'none') {
                url = '../Generales/AddOffer';
            } else {
                url = '../Generales/EditOfferP';
                parameters += "&regStatus=" + $('#regStatus').is(':checked');
            }
    
            $.ajax({
                url: url,
                type: 'post',
                data: parameters,
                contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                success: function (data) {
                    if (data.IsOk) {
                        jAlert(data.Msg, 'Correcto', function () {
                            jQuery('#formID').validationEngine('hide');
                            $("#divBody").load('../Generales/Ofertas');
                        });
    
                    }
                    else {
                        if (data.ValidationsFail == undefined) {
                            jAlert(data.Msg, 'Error');
                        }
                        else {
                            var msg = "<ul>";
                            for (var cont = 0; cont < data.ValidationsFail.length; cont++) {
                                msg += "<li><strong>" + data.ValidationsFail[cont].PropertyName + "</strong> " + data.ValidationsFail[cont].ErrorMessage + "</li>";
                            }
                            msg += "</ul>";
                            jAlert(msg, data.Title);
                            $('#btnSave', this).attr('disabled', 'disabled');
                        }
                    }
                }
            });
        }

    del lado controlador tengo

    [HttpPost]
            public ActionResult AddOffer(FormCollection form)
            {
                var messageList = new List<RuleViolation>();
                try
                {
                    var user = Session["User"].ToString();
                    //Get parameters from fields in the view
                    var typeOffer = Request.Params["typeOffer"];
                    var codeOffer = Request.Params["codeOffer"];
                    var nameOffer = Request.Params["nameOffer"].Replace("nbsp", " ").Trim();

    el problema es que si pongo un punto de interrupción y veo que trajo Params, si veo que estan los caracteres especiales, pero si despues veo que tiene nameOffer, el +, el & se transforman en espacios en blancos, pienso que la solución sería codificar el query string desde javascript y decodificarlo desde el controlador pero no se que métodos puedo usar.

    gracias por su ayuda


    • Cambiado Lisa Zhu jueves, 19 de julio de 2012 8:09 (De:JScript for the .NET Framework)
    martes, 17 de julio de 2012 19:50

Todas las respuestas

  • Hi marbalgris ,
    This is an English Forum , so  I'd like to move this thread to the related forum  which correspond to  your language  for  better support .
    Thanks for your understanding .
    regards ,

    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us


    • Editado Lisa Zhu viernes, 20 de julio de 2012 7:36
    jueves, 19 de julio de 2012 8:06