2016-12-13 50 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,它是作爲顧名思義,用於展示。如果要顯示帶格式的十進制值並使其可用於編輯,則必須在後期處理從文本到小數的轉換 - 或者每當需要實際值時。