asp.net mvc设置数字格式默认十进制千位分隔符

时间:2012-10-26 11:56:25

标签: asp.net-mvc number-formatting

如何在asp.net mvc中为格式化数字设置默认小数和千位分隔符而不管文化?

7 个答案:

答案 0 :(得分:4)

您可以创建一个DisplayTemplate来处理视图中显示的数字:

/Views/Shared/DisplayTemplates/float.cshmtl

@model float
@string.Format("{0:N2}", Model);

然后,如果Amount的类型为float,则可以在您的观看中将其称为此类:

@Html.DisplayFor(m => m.Amount)

答案 1 :(得分:3)

要控制千位分隔符,您必须将更改应用于当前文化的NumberFormat

如果您希望这种情况发生,无论当前的文化是什么,您只需克隆当前的文化,应用修改后的NumberFormat并将其设置为当前文化。

在MVC应用程序中,您通常会在Application_BeginRequest

期间执行此操作
protected void Application_BeginRequest(object sender, EventArgs e)
{
    newCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
    newCulture.NumberFormat.NumberGroupSeparator = "~";

    System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
    System.Threading.Thread.CurrentThread.CurrentUICulture = newCulture;
}

现在,您可以使用ToString()的“普通”格式选项,根据您的需要进一步控制格式:

var a = 3000.5;
var s = a.ToString('N:2') // 3~000.50
s = a.ToString('N:4') // 3~000.5000

答案 2 :(得分:2)

您需要指定自定义数字格式才能实现您的目标。 Here is the MSDN有关创建自定义字符串格式化函数的信息。

如果您确实需要自定义千位分隔符,请创建自己的NumberFormatInfo变量,将所需的值分配给千位分隔符(如果需要,还可以指定小数)。然后将自定义格式应用于您的号码。

var numberFormatter = new CultureInfo( "en-US", false ).NumberFormat;
numberFormat.NumberDecimalSeparator = ";";
numberFormat.NumberGroupSeparator = "-";
var myNumber = 1234567.89;
var myFormattedNumber = myNumber.ToString("#,###.##", numberFormatter);

//myFormattedNumber -> 1-234-567;89

有关NumberFormat class from the MSDN

的一些信息

答案 3 :(得分:1)

variable.ToString(“n2”) - 这在ASP.Net MVC Razor中对我有用。

答案 4 :(得分:0)

string.Format("{0:N2}", yourLovelyNumber);

答案 5 :(得分:0)

我将发布最终为我工作的代码。在控制器上,OnActionExecuting函数:

ViewBag.CurrentNumberFormat = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
ViewBag.CurrentNumberFormat.NumberDecimalDigits = 2;
ViewBag.CurrentNumberFormat.NumberDecimalSeparator = "~";
ViewBag.CurrentNumberFormat.NumberGroupSeparator = " ";

并在视图中:

 @((1234567.435).ToString("#,###.##", ViewBag.CurrentNumberFormat))

答案 6 :(得分:0)

我遇到了同样的问题,可以推荐 autoNumeric 插件https://github.com/autoNumeric/autoNumeric

包含插件:

<script src="~/Scripts/autoNumeric/autoNumeric.min.js" type="text/javascript"></script>

HTML:

 <input type="text" id="DEMO" data-a-sign="" data-a-dec="," data-a-sep="." class="form-control"> 

脚本:

<script>
 jQuery(function($) {
$('#DEMO').autoNumeric('init');   
 });
</script>

您只能输入数字,如果输入100000,99,您将看到100.000,99。