mhe*_*xon 5 globalization asp.net-mvc-2 jquery-globalization
我正在尝试asp.net mvc2应用程序中的一些全球化,但无法让它完全运行.我使用图书馆http://github.com/nje/jquery-glob作为工具,根据用户的意愿显示货币和日期等.然而有些事情让我感到困扰.IU无法使用jQuery实际接受全球化的客户端/服务器端验证.无论我尝试什么,如果我回发40.00一切正常,但如果我发布40,00它被接受为0(不是有效的.NET不变十进制值).我试着按照@haacked的指南
这是在服务器端处理的global.asax中:
private void SetCulture(string currencySymbol)
{
AjaxHelper.GlobalizationScriptPath =
http://ajax.microsoft.com/ajax/4.0/1/globalization/";
var culturePref = "sv-SE";
var request = HttpContext.Current.Request;
if (request.UserLanguages == null)
return;
var lang = request.UserLanguages[0];
if (lang != null) {
try {
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(lang);
}
catch {
Thread.CurrentThread.CurrentCulture =
new CultureInfo(culturePref);
}
}
Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture;
}
Run Code Online (Sandbox Code Playgroud)
然后在客户端,我包括以下脚本:
<script src="/Scripts/jquery-1.4.2.js" type="text/javascript"></script>
<script src="/Scripts/jquery.glob.js" type="text/javascript"></script>
<script src="/Scripts/globinfo/jquery.glob.sv-SE.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$.culture = jQuery.cultures['sv-SE'];
$.preferCulture('sv-SE');
});
</script>
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.pack.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>
<script src="/Scripts/jquery.metadata.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
到目前为止这么好,但没有做太多.不要误会我的意思我仍然可以在客户端使用它,但在服务器端没有任何实际发生.下面的jQuery相应地更改了格式,但是当我回发40,00时,它变为0.00.
function globalizePage(culture) {
// Set culture from select list
$.preferCulture(culture);
$("input[id$='Date']").val(function () {
var dateString = $(this).val();
var date = Date.parse(dateString);
var dt = $.format(date, 'd', culture.name);
return dt;
});
$("input[id$='Price']").val(function () {
var price = $.parseInt($(this).val());
var retVal = $.format(price, 'c', culture.name);
return retVal;
});
}
Run Code Online (Sandbox Code Playgroud)
要使上述代码有效,我需要做什么?
问题解决了,培根保存或炸鸡肉。发生这种情况的原因是 jquery.validate 和 jquery.glob 使用名为“format”的函数,如果在 glob 之后添加 validate,则调用 validate.format 函数,这会破坏全球化。另一方面验证功能。我对 javascript 或 jquery 的了解不够好,无法告诉您任何解决方法。我将手动编写表单验证代码,并忘记 MicrosoftMVCjQueryValidation,因为这不能正确执行验证插件。
<script src="https://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="https://ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.glob.js" type="text/javascript"></script>
<script src="/Scripts/globinfo/jquery.glob.sv-SE.js" type="text/javascript"></script>
<script src="/Scripts/jquery.forms.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)