Principales respuestas
cambio en el formato de fecha de acuerdo al valor de una variable

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.
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
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 -
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???
-
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 -
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