Tho*_*ton 18 c# asp.net-mvc currency
在我看来,我有以下电话.
<%= Html.EditorFor(x => x.Cost) %>
Run Code Online (Sandbox Code Playgroud)
我有一个带有以下代码的ViewModel来定义Cost.
public decimal Cost { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是,这会显示十进制值,小数点后有四位数(例如0.0000).我知道Decimal.toString("G")
(MSDN)似乎解决了这个问题,但我不确定在哪里应用它.
一个解决方案似乎是创建一个局部视图"Currency.aspx".
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Decimal>" %>
<%= Html.TextBox(Model.ToString("g"), new { @class = "currency" }) %>
Run Code Online (Sandbox Code Playgroud)
并且[UIHint("Currency")]
在我的视图模型.
这似乎不优雅.我认为这个问题已经在MVC框架或C#中的某个地方得到了解决,但我不知道更清洁的解决方案.
在MVC中处理编辑货币值的适当方法是什么?
Dar*_*rov 41
[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
public decimal Cost { get; set; }
Run Code Online (Sandbox Code Playgroud)
在你看来:
<%= Html.EditorFor(x => x.Cost) %>
Run Code Online (Sandbox Code Playgroud)
就这样.
您可能希望应用自定义CSS类.你可以这样做:
<div class="currency">
<%= Html.EditorFor(x => x.Cost) %>
</div>
Run Code Online (Sandbox Code Playgroud)
然后在你的CSS中:
.currency input {
/** some CSS rules **/
}
Run Code Online (Sandbox Code Playgroud)
或编写自定义DataAnnotationsModelMetadataProvider,它允许您:
[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
[HtmlProperties(CssClass = "currency")]
public decimal Cost { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后在你看来:
<%= Html.EditorFor(x => x.Cost) %>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28640 次 |
最近记录: |