3

カルチャに関係なく、asp.net mvcで数値をフォーマットするためにデフォルトの小数と千単位の両方の区切り文字を設定するにはどうすればよいですか?

4

7 に答える 7

5

DisplayTemplateこのような数値がビューにどのように表示されるかを処理するを作成できます。

/Views/Shared/DisplayTemplates/float.cshmtl

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

Amountタイプが次の場合は、ビューから次のように呼び出すことができますfloat

@Html.DisplayFor(m => m.Amount)
于 2012-10-26T11:59:37.603 に答える
3

探しているものを実現するには、カスタムの数値形式を指定する必要があります。 これは、カスタム文字列フォーマット関数の作成に関する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

MSDNのNumberFormatクラスに関する情報

于 2012-10-26T14:10:54.797 に答える
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
于 2012-10-26T14:03:24.430 に答える
2

variable.ToString( "n2")-これはASP.NetMVCRazorで機能しました。

于 2013-05-14T15:35:19.370 に答える
1
string.Format("{0:N2}", yourLovelyNumber);
于 2012-10-26T11:57:22.330 に答える
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))
于 2012-10-29T11:10:37.430 に答える
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と表示されます。

于 2017-09-01T13:38:41.223 に答える