首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该如何在MVC中使用货币/货币类型的EditorFor()?

我应该如何在MVC中使用货币/货币类型的EditorFor()?
EN

Stack Overflow用户
提问于 2011-02-22 23:53:46
回答 2查看 29.9K关注 0票数 18

在我看来,我有以下调用。

<%= Html.EditorFor(x => x.Cost) %>

我有一个包含以下代码的ViewModel来定义成本。

public decimal Cost { get; set; }

但是,这会显示小数后面有四位数的十进制值(例如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" }) %>

在我的ViewModel里还有一个[UIHint("Currency")]

这似乎很不雅观。我假设这个问题已经在MVC框架或C#中的某个地方整齐地解决了,但我不知道有更干净的解决方案。

在MVC中编辑货币值的合适方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 23:59:36

[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
public decimal Cost { get; set; }

在你看来:

<%= Html.EditorFor(x => x.Cost) %>

仅此而已。

您可能希望应用自定义CSS类。你可以这样做:

<div class="currency">
    <%= Html.EditorFor(x => x.Cost) %>
</div>

然后在你的css中添加:

.currency input {
    /** some CSS rules **/
}

或允许您执行以下操作的write a custom DataAnnotationsModelMetadataProvider

[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
[HtmlProperties(CssClass = "currency")]
public decimal Cost { get; set; }

然后在您的视图中:

<%= Html.EditorFor(x => x.Cost) %>
票数 42
EN

Stack Overflow用户

发布于 2011-02-22 23:56:31

如果您使用的是EditorFor模板,则这是合适的方法。

“异常不雅”是什么意思?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5080451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档