【问题标题】:How to set up currency format for MVC EditorFor?如何为 MVC EditorFor 设置货币格式?
【发布时间】:2016-01-06 03:06:19
【问题描述】:

我必须在需要以货币格式显示项目金额的页面上。第一个是输入货币的地方,第二个是显示货币的地方。

我希望 EditorFor 显示一个 R 表示的 Rands,然后我希望该值为十进制。

这是我的编辑器:

<div class="editor-field">
    @Html.EditorFor(model => model.TransactionModel.Price)
</div>

我尝试了许多不同的方法,但都无法奏效。

对于下面这个示例,它不知道第二行中的“CurrencyPrice”是什么。

var CurrencyPrice = '@Model.TransactionModel.Price';
document.getElementById('TransactionModel.Price').value = '@string.Format("{0:C}", CurrencyPrice)'; 

我也在我的 transactionModel 中尝试过这些:

//[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
//[UIHint("Currency")]
//[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
//[DataType(DataType.Currency)]
public decimal Price { get; set; }

谁能告诉我如何才能做到这一点?

现在我会接受任何工作方法。

【问题讨论】:

    标签: jquery asp.net-mvc razor currency-formatting


    【解决方案1】:

    使用 MVC 4,您可以使用包含格式字符串的 TextBoxFor 方法:

    @Html.TextBoxFor(model => model.TransactionModel.Price, "{0:c}")
    

    在 MVC 3 及以下版本中:

    @Html.TextBoxFor(model => model.TransactionModel.Price, 
        new { @Value = model.TransactionModel.Price.ToString("c") })
    

    EditorFor 可能有效,也可能无效。就个人而言,我遇到了问题。如需更多灵感,请参阅this answer

    【讨论】:

    • 两者都没有工作,我使用的是 MVC 4。文本框保持不变,只是格式化一个平面数字。
    • 您是否在 web.config 中设置了文化信息?在&lt;system.web&gt; 部分:&lt;globalization enableClientBasedCulture="false" culture="en-ZA" uiCulture="en-ZA" /&gt;。这对我显示 R 表示兰特有效。
    • 我设置了,没有效果。
    • 那么我没有更多的建议。我已经验证 TextBoxFor 在将文化设置为 en-ZA 时在我的 MVC 项目中创建了一个带有 R 前缀的输入文本框,所以我不明白为什么它在你的情况下不起作用。
    【解决方案2】:

    我无法让上述内容为我工作。这是我提出的在模型上使用数据注释的解决方案。

    [Required]
    [DisplayName("Average Yearly Salary")]
    [Numeric]
    [RegularExpression(@"^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$", ErrorMessage = "The value must be in currency format ")]
    [StringLength(12)]
    

    我从 JohnM here 那里得到了正则表达式。

    这对每个人来说都不应该这么难!我很惊讶我不得不在 ASP.NET 应用程序中验证货币付出如此多的努力!!!本应花费 30 秒的时间,却花费了数小时的研究和测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2016-08-29
      • 2012-05-31
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多