如何设置货币格式MVC EditorFor?(How to set up currency form

2019-10-18 10:05发布

我必须需要证明与货币格式的项目数量的网页。 第一个是在其中输入货币,第二个,其中显示货币。

我想EditorFor以示出R所示兰特,然后我想的值为小数。

这里是我的EditorFor:

<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; }

可能有人请告诉我,我怎么能得到这个权利?

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

Answer 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可能会或可能无法正常工作。 就个人而言,我曾与它的问题。 欲了解更多灵感,看到这个答案 。



Answer 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得到了正则表达式在这里 。

这确实应该不是每个人都这么难! 我很惊讶,我不得不提出这么多的精力放在验证货币在ASP.NET应用程序! 什么应该采取30秒了的研究和测试时间。



文章来源: How to set up currency format for MVC EditorFor?