我有一个属性:如何将十进制格式的百分比格式化为首先在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