MVC、C# 中的十进制符号问题?
Decimal symbol issue in MVC, C#?
我正在使用 MVC 5.0
我在配置中设置文化:
<system.web>
<globalization uiCulture="fa-IR" culture="fa-IR" />
</system.web>
我有一个模型如下:
public class MyModel
{
[DisplayName("NbatPersent")]
[Range(0, 100)]
public double NbatPersent{ get; set; }
}
MVC 在视图中显示 NbatPersent
值,如 22/5
,当我想提交表单时,表单验证器会提醒我 The field NbatPersent must be a number.
。它无法将 22/5
转换为 22.5
如果我输入 22.5 就可以了,但是如果 属性 有一个值,它会将 .
转换为 /
如何将所有数字属性的文化转换为 en-US
以显示 22.5
而非 22/5
.
的值
编辑:
我正在使用 @Html.TextBoxFor
来显示小数 属性 因为用户应该更改它。
尝试明确设置视图格式
@Html.DisplayFor(x => string.Format("{0:0.00}", x.NbatPersent));
否则您可以为双精度类型编写自定义编辑器模板 (~/Views/Shared/EditorTemplates/double.cshtml):
@model double?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("#,##0.000#") : "")
然后在您看来:
@Html.EditorFor(x => x.NbatPersent)
由于 jquery.validate.js
使用以下内容验证值(只允许 .
字符作为小数点分隔符。
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
},
您可以使用 jquery.validate.globalize.js
插件(请参阅 this article 了解更多详细信息)或者您可以添加自己的脚本来修改验证器,例如(在 jquery.validate.js
之后包含这个)
$.validator.methods.number = function (value, element) {
return this.optional(element) || $.isNumeric($(element).val().replace('/', '.'));
}
我正在使用 MVC 5.0
我在配置中设置文化:
<system.web>
<globalization uiCulture="fa-IR" culture="fa-IR" />
</system.web>
我有一个模型如下:
public class MyModel
{
[DisplayName("NbatPersent")]
[Range(0, 100)]
public double NbatPersent{ get; set; }
}
MVC 在视图中显示 NbatPersent
值,如 22/5
,当我想提交表单时,表单验证器会提醒我 The field NbatPersent must be a number.
。它无法将 22/5
转换为 22.5
如果我输入 22.5 就可以了,但是如果 属性 有一个值,它会将 .
转换为 /
如何将所有数字属性的文化转换为 en-US
以显示 22.5
而非 22/5
.
编辑:
我正在使用 @Html.TextBoxFor
来显示小数 属性 因为用户应该更改它。
尝试明确设置视图格式
@Html.DisplayFor(x => string.Format("{0:0.00}", x.NbatPersent));
否则您可以为双精度类型编写自定义编辑器模板 (~/Views/Shared/EditorTemplates/double.cshtml):
@model double?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("#,##0.000#") : "")
然后在您看来:
@Html.EditorFor(x => x.NbatPersent)
由于 jquery.validate.js
使用以下内容验证值(只允许 .
字符作为小数点分隔符。
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
},
您可以使用 jquery.validate.globalize.js
插件(请参阅 this article 了解更多详细信息)或者您可以添加自己的脚本来修改验证器,例如(在 jquery.validate.js
之后包含这个)
$.validator.methods.number = function (value, element) {
return this.optional(element) || $.isNumeric($(element).val().replace('/', '.'));
}