我有一个财产:
public decimal myProperty { get; set; }
这是我的渲染:
@Html.TextBoxFor(m => m.myProperty , new { @class = "percentage" })
我如何做百分比?
我有一个财产:
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 属性定义的格式。
这是我最终使用帖子中的建议之一的方式。
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 建议在实体类中做这一切的方式。我为克拉克县的评估员办公室构建的应用程序需要大量带有 $ 和 % 格式的会计显示。来回转换以进行显示、编辑和提取以及更新数据库的工作给我带来了很大的痛苦。更不用说我在组合中有更新面板。
@Html.TextBoxFor(m => (m.myProperty/10000).ToString("P"))
请参阅MSDN。