用逗号分隔数字与asp.net mvc

时间:2011-03-28 17:05:24

标签: asp.net-mvc asp.net-mvc-2 numbers format data-annotations

我正在开发MVC2应用程序。

我使用数据注释来验证数据(客户端和服务器端)。我的模型中有几个字段只允许十进制值。一旦用户键入十进制值,我希望它转换为逗号分隔更可读的格式。例如,1200应格式化为1,200,而500应保持原样。

这是我的模特:

public virtual GrossFee? Fee { get; set; }

以下是该观点:

%: Html.TextBoxFor(model => model.GrossFee)%>

任何关于此的想法都将受到高度赞赏。

谢谢!

5 个答案:

答案 0 :(得分:11)

您可以使用Html.TextBoxFor代替Html.EditorFor,并让视图尊重这样的数据注释:

型号:

(我不知道GrossFee?是什么,但我们假设它是一个小数)

[DisplayFormat(DataFormatString = "{0:0,0}")]
public virtual Decimal? Fee { get; set; }

查看:

Html.EditorFor(model => model.GrossFee)

您可能还需要调整HtmlEncode和ApplyFormatInEditMode以适合您的特定应用。

一旦输入(即回发之前)将文本框内容转换为逗号分组数字的任何内容都需要基于javascript。

答案 1 :(得分:5)

[DisplayFormat(DataFormatString = "{0:n}")]
public virtual GrossFee? Fee { get; set; }

希望这可以帮到你

答案 2 :(得分:4)

drPastDateDetail[strMS] = decValue.ToString();

如果您希望用逗号显示数值,而不是以上行,以下代码将帮助您 -

String Test = String.Format("{0:#,#.##}",decValue);
drPastDateDetail[strMS]=Test;

答案 3 :(得分:0)

我将这行代码放在我的控制器中

public ActionResult Index()

{

        TempData["TotalPaid"] = totalAmountPaid.ToString("#,###.00");

}

And i put this in my View

   <table>
       <tr>
         <td style="color:green; font-weight:bold" >
            Amount Paid: $@TempData["TotalPaid"]
       </td>
    </tr>        
</table>

答案 4 :(得分:-1)

你应该可以在tostring中使用格式

var foo = 1200.2;
var bob = foo.ToString("#,###.00##");