2016-12-13 53 views
0

当使用我失去了在球场上约束力@ Html.EditorFor失去的时候我将格式

@Html.EditorFor(model => model.Quote.DiscountRate, new { @class = "form-control pull-left " }) 

和模型领域结合下文是这样的:

[DisplayFormat(DataFormatString = "{0:P2}",ApplyFormatInEditMode =true)] 
public double? DiscountRate { get; set; } 

如果我删除DisplayFormat的绑定仍然有效。 我也试过同样的结果如下:

@Html.TextBoxFor(model => model.Entity.DiscountRate, "{0:P2}", new { @class = "form-control pull-left" }) 

在这两种情况下,如果我删除格式让我的装订背衬

+0

视图如何失去模型绑定?请检查浏览器上生成的HTML元素,并将生成的代码粘贴为编辑(甚至包括您的视图和控制器代码以帮助重现您的问题)。对于MVC 5.1及以上版本,您可以使用'EditorFor'和'htmlAttributes':'@ Html.EditorFor(model => model.Quote.DiscountRate,new {htmlAttributes = new {@class =“form-control pull-left”} })'。 –

+0

我想我已经知道了,但我对结果感到惊讶。根据你的建议,我查看了生成的代码。在我使用格式化值=“15.00%”的情况下。在我不使用格式的情况下,值=“0.150000000”。由于该字段是十进制的,因此格式化的值无效,因此不会绑定。对我来说这似乎有点奇怪,因为我认为大多数人会想要格式化值,所以你会认为剃刀会支持这一点。我想我需要弄清楚一项工作。 – Dan

回答

0

我所发现的是,当你申请一个DisplayFormat,它是作为顾名思义,用于展示。如果要显示带格式的十进制值并使其可用于编辑,则必须在后期处理从文本到小数的转换 - 或者每当需要实际值时。