none
cambio en el formato de fecha de acuerdo al valor de una variable RRS feed

  • Pregunta

  • Saludos tengo una aplicación que carga los mensajes de acuerdo al idioma  que el usuario elige, esto se hace a a través de esto:

     var current_controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
            //string active = "active";
            var text_language = "English";
            var tag_language = "en";

            switch (ViewContext.RouteData.Values["Language"].ToString())
            {
                case "es":
                    text_language = "Español";
                    tag_language = "es";
                    break;
                case "en":
                    text_language = "English";
                    tag_language = "en";
                    break;
                case "fr":
                    text_language = "Français";
                    tag_language = "fr";
                    break;
                default:
                    text_language = "English";
                    tag_language = "en";
                    break;
            }

    mi problema consiste en que debo cambiar el datapicker de bootstrap que esta en formato ingles y debo cambiarlo de formato de acuerdo al idioma seleccionado por el usuario; mi problema es estoy tratando de hacerlo de esta forma:

    dentro del cshtml:

      @{
            var current_controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
            //string active = "active";
            var text_language = "English";
            var tag_language = "en";

            switch (ViewContext.RouteData.Values["Language"].ToString())
            {
                case "es":
                    text_language = "Español";
                    tag_language = "es";
                    break;
                case "en":
                    text_language = "English";
                    tag_language = "en";
                    break;
                case "fr":
                    text_language = "Français";
                    tag_language = "fr";
                    break;
                default:
                    text_language = "English";
                    tag_language = "en";
                    break;
            }

    y dentro del archivo .JS

    var Idioma = tag_language;

    $(function () {
        if (Idioma == "es")
        {
            $("#Client_Expirationdate").datepicker({
                dateFormat: "dd-mm-yyyy"
            });
        }
        else
        {
            $("#Client_Expirationdate").datepicker();
        }
    });

    Como debo modificar esto para:

    1.- me vuelva a aparecer el datepicker, por que hago click en la caja y ya no aparece.

    2.- como hago para que el dato tag_language, entre a la funcion??

    Gracias.

    jueves, 14 de febrero de 2019 15:59

Respuestas

  • YA LO SOLUCIONE!!!!  de esta manera:

    en el cshtml , agregue esto:

    var current_controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
        //string active = "active";
        var text_language = "English";
        var tag_language = "en";
        switch (ViewContext.RouteData.Values["Language"].ToString())
        {
            case "es":
                text_language = "Español";
                tag_language = "es";
                break;
            case "en":
                text_language = "English";
                tag_language = "en";
                break;
            case "fr":
                text_language = "Français";
                tag_language = "fr";
                break;
            default:
                text_language = "English";
                tag_language = "en";
                break;
        }

    <input type="hidden" id="Idioma" value=@tag_language />

    y después en el .JS, agregue esto:

    var language;

    $(function () {

        language = $("#Idioma").val();

        if (language == 'es' || 'fr')
        {
            $("#Client_Expirationdate").datepicker({ dateFormat: "dd/mm/yy" });
        }
        else
            {
            $("#Client_Expirationdate").datepicker();
            }
    });

    • Marcado como respuesta Rodrigo Menares viernes, 15 de febrero de 2019 14:11
    viernes, 15 de febrero de 2019 14:11

Todas las respuestas

  • hola

    >>me vuelva a aparecer el datepicker, por que hago click en la caja y ya no aparece.

    si revisas la developr tools del browser, a la cual accedes con F12, no visualizas ningun error en javascript en la solapa Console

    quizas hay un error en el browser que impida que se vea el control desplegable

    >>como hago para que el dato tag_language, entre a la funcion?

    si la comunicas desde el servidor deberias ponerla resolverlo en el controller y enviar ese dato en el ViewBag

    entonces en el cstml usarias

    var text_language = '@ViewBag.Lenguaje';

    el tema es que eso se escribira en el html que se renderiza, depsues debes poder tomarlo en el .js

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 14 de febrero de 2019 16:54
  • saludos;

    hice lo siguiente :

    @viewbag.leng = tag_language;

    y al ejecutarlo me envia errores de ejecución, sorry no me ejecuta.

    por lo que estoy tratando a través de la pagina que renderiza, pues, se trata de una vista parcial y estoy tratando de pasar el valor a la pagina que esta siendo llamada de la siguiente forma:

     @{Html.RenderPartial("~/View/Admin/_ClientInstance.cshtml", new ViewDataDictionary(new { leng = 'leg' } )); }

    pero en la parte : 'leg', me indica :  demasiados caracteres en carácter literal.

    como puedo solucionarlo???

    jueves, 14 de febrero de 2019 20:52
  • hola

    >>y al ejecutarlo me envia errores de ejecución, sorry no me ejecuta.

    pero que significa esa solucion, asiganas el ViewBag desde la view? eso no se hace

    >>se trata de una vista parcial y estoy tratando de pasar el valor a la pagina que esta siendo llamada de la siguiente forma:

    porque no pones el valor en el objeto Session y asi lo tienes para enviarlo donde lo necesites

    no tiene porque pasarlo siempre desde la view, puedes tener el valor en el servidor, en Session para enviarlo como dato a la view que lo requira

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 15 de febrero de 2019 14:05
  • YA LO SOLUCIONE!!!!  de esta manera:

    en el cshtml , agregue esto:

    var current_controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
        //string active = "active";
        var text_language = "English";
        var tag_language = "en";
        switch (ViewContext.RouteData.Values["Language"].ToString())
        {
            case "es":
                text_language = "Español";
                tag_language = "es";
                break;
            case "en":
                text_language = "English";
                tag_language = "en";
                break;
            case "fr":
                text_language = "Français";
                tag_language = "fr";
                break;
            default:
                text_language = "English";
                tag_language = "en";
                break;
        }

    <input type="hidden" id="Idioma" value=@tag_language />

    y después en el .JS, agregue esto:

    var language;

    $(function () {

        language = $("#Idioma").val();

        if (language == 'es' || 'fr')
        {
            $("#Client_Expirationdate").datepicker({ dateFormat: "dd/mm/yy" });
        }
        else
            {
            $("#Client_Expirationdate").datepicker();
            }
    });

    • Marcado como respuesta Rodrigo Menares viernes, 15 de febrero de 2019 14:11
    viernes, 15 de febrero de 2019 14:11