MVC中的十进制符号问题,C#?

我正在使用MVC 5.0
我在config中设置了文化:

   

我有一个模型如下:

 public class MyModel { [DisplayName("NbatPersent")] [Range(0, 100)] public double NbatPersent{ get; set; } } 

MVC在视图中显示NbatPersent值,如22/5 ,当我想提交表单时,表单validation器提醒我The field NbatPersent must be a number. 。 它无法将22/5转换为22.5
如果我输入22.5就可以了,但如果属性有一个转换的值./

如何将所有数字属性的文化转换为en-US以显示22.5类的值,而不是22/5

编辑:
我正在使用@Html.TextBoxFor来显示decimal属性,因为用户应该更改它。

由于jquery.validate.js ,您将获得客户端validation错误,该错误使用以下内容validation该值(仅允许.字符作为小数分隔符。

 number: function(value, element) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); }, 

您可以使用jquery.validate.globalize.js插件(请参阅此文章以获取更多详细信息),或者您可以添加自己的脚本来修改validation器,例如(在jquery.validate.js之后包含此jquery.validate.js

 $.validator.methods.number = function (value, element) { return this.optional(element) || $.isNumeric($(element).val().replace('/', '.')); } 

尝试显式设置视图格式

 @Html.DisplayFor(x => string.Format("{0:0.00}", x.NbatPersent)); 

否则你可以为double类型编写自定义编辑器模板(〜/ Views / Shared / EditorTemplates / double.cshtml):

 @model double? @Html.TextBox("", Model.HasValue ? Model.Value.ToString("#,##0.000#") : "") 

然后在你看来:

 @Html.EditorFor(x => x.NbatPersent)