我有一個屬性:如何將十進制格式的百分比格式化爲首先在Razor TextBoxFor中渲染的EF代碼?
public decimal myProperty { get; set; }
,這裏是我的渲染:
@Html.TextBoxFor(m => m.myProperty , new { @class = "percentage" })
我該怎麼辦的百分比是多少?
我有一個屬性:如何將十進制格式的百分比格式化爲首先在Razor TextBoxFor中渲染的EF代碼?
public decimal myProperty { get; set; }
,這裏是我的渲染:
@Html.TextBoxFor(m => m.myProperty , new { @class = "percentage" })
我該怎麼辦的百分比是多少?
您可以與[DisplayFormat]
屬性裝點您的視圖模型屬性讓你指定的格式:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:P2}")]
public decimal myProperty { get; set; }
,並在您的視圖:
@Html.EditorFor(x => x.myProperty)
但要小心,因爲DisplayFormat屬性(如它的名字建議)僅用於顯示目的。它不被默認的模型綁定器使用。因此,當用戶通過發佈表單提交此值時,您將收到驗證錯誤,因爲例如0.45%
不是有效的十進制值。我已經在this post
中說明了如何定義自定義模型綁定器,該綁定器在綁定值時將使用由DisplayFormat屬性定義的格式。
聽起來不錯,現在有無論如何將CSS類應用於EditorFor?我需要css類。 – Bill 2013-05-09 16:02:07
看了這麼多天...... :)歡迎回到SO。 – 2013-05-09 16:17:03
@Html.TextBoxFor(m => (m.myProperty/10000).ToString("P"))
參見MSDN。
這不起作用。強類型助手只支持簡單的lambda表達式。 – 2013-05-09 15:51:06
這不起作用 – 2016-07-25 18:00:50
以下是我如何結束使用帖子中的建議之一。
public class JobCand
{
[Key]
[HiddenInput(DisplayValue = false)]
public int JC_ID { get; set; }
public int Job_ID { get; set; }
public int Candidate_ID { get; set; }
[DataType(DataType.MultilineText)]
[StringLength(250)]
public string JC_Note { get; set; }
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:P0}")]
[RegularExpression(@"[0-9]+(\.[0-9][0-9]?)?$", ErrorMessage = "Invalid rate")]
public decimal? JC_Skill_Match_Pct { get; set; }
}
我會告訴你與ASP.NET控件相比的一件事情,並且用這種方式格式化後的C#.NET代碼要容易得多。我喜歡MVC建議在實體類中完成這一切的方式。我爲Clark County的Assessor辦公室構建的應用程序需要使用$和%格式進行大量會計顯示。爲了顯示,編輯和提取以及更新數據庫而來回轉換的工作給我帶來了很多痛苦。更不用說我已經更新了面板。
我回答得太快,而且我完全錯了。我刪除了我的答案。 – madd0 2013-05-09 16:00:45