我有一个只有一个小数属性的简单模型:
public class Model {
public decimal Quantity { get;set; }
}
在我的看法中,我有:
@Html.TextBoxFor(m => m.Quantity)
@Html.ValidationMessageFor(m => m.Quantity)
事实上,当我尝试发布带有小数部分的值(如1.5、2.5等)时,根据我使用的
NumberDecimalSeparator
,我会在客户端或服务器端收到验证错误。如果我发布1,5
,我会收到客户端验证错误(即数据验证-数字错误),或者如果我发布1.5
,我会收到服务器端模型验证错误-"对于数量来说,值'1.5'无效。"
我尝试在Global.asax的Application_Start()
中手动设置NumberDecimalSeparator
,但没有帮助。var currentCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
currentCulture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = currentCulture;
Thread.CurrentThread.CurrentUICulture = currentCulture;
当我手动向数据库添加一些值并尝试编辑它们时,文本框中显示的值带有点号
"."
,但是当我尝试保存另一个带点号的值时,会出现服务器端验证错误。可能的原因是什么?为什么手动更新区域设置信息没有起作用?// 编辑: 我的方法是更改
currentCulture.NumberFormat.NumberDecimalSeparator
,但只有在每次Application_BeginRequest()
上执行时才有效:protected override void Application_BeginRequest(object sender, System.EventArgs e)
{
var currentCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
currentCulture.NumberFormat.NumberDecimalSeparator = ".";
currentCulture.NumberFormat.NumberGroupSeparator = " ";
currentCulture.NumberFormat.CurrencyDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = currentCulture;
Thread.CurrentThread.CurrentUICulture = currentCulture;
base.Application_BeginRequest(sender, e);
}
为什么应用程序启动时它不起作用?
culture="ru" uiCulture="ru-RU"
,我也想使用点作为小数分隔符,因为这是默认设置。 - DmytroApplication_AcquireRequestState
中,而不是Application_Start
中。 - user3559349