2012-10-26 390 views

回答

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)) 
+1

這與我在下面發表的內容有什麼不同嗎?(很高興您能夠正常工作! – Tommy

+0

這不一樣,因爲我無需編寫5行代碼,而只需要格式化一個數字。您的文章確實有幫助和鼓舞人心,謝謝 –

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

好的,但我希望能夠自己指定小數和千位分隔符,我該怎麼做? –

4

您可以創建一個DisplayTemplate,將處理怎麼樣這個號碼顯示在您的看法:

/Views/Shared/DisplayTemplates/float.cshmtl

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

,然後你可以從你的觀點稱呼它,如果Amountfloat

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

這個模板是如何引用的? –

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 
+0

更新System.Threading.Thread.CurrentThread.CurrentCulture不起作用,因爲它會導致其他錯誤。我可以舉一個例子:當我嘗試在Number中轉換默認格式的字符串(例如「14543.12」)時,它會引發錯誤。這是有道理的。感謝您的幫助,無論如何 –

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

1

variable.ToString( 「N2」) - 這在ASP.Net MVC剃刀爲我工作。

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。

+0

截至今天,在當前穩定版本'4'中不再支持jQuery的舊記法,這是行不通的,只需使用'new AutoNumeric('#DEMO' )'你很好走! – Alex

相關問題