asp.net mvc установить числовой формат по умолчанию десятичные разделители тысяч

Как установить десятичный разделитель по умолчанию и разделитель тысяч для форматирования числа в asp.net mvc независимо от культуры?

Ответы на вопрос(7)

n2") - это сработало для меня в ASP.Net MVC Razor.

string.Format("{0:N2}", yourLovelyNumber);
 Sandra S.26 окт. 2012 г., 14:05
хорошо, но я хочу иметь возможность указать один десятичный разделитель и разделитель тысяч, как я могу это сделать?

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.

 Alex11 сент. 2017 г., 13:23
На сегодняшний день старая нотация с jQuery больше не поддерживается в текущей стабильной версии4, Это не сработает. Просто используйтеnew AutoNumeric('#DEMO') и ты в порядке!

DisplayTemplate это обработало бы, как числа как это отображаются в ваших представлениях:

/Views/Shared/DisplayTemplates/float.cshmtl:

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

и тогда вы можете назвать это так из ваших взглядов, еслиAmount был типаfloat:

@Html.DisplayFor(m => m.Amount)
 Christofer Ohlsson26 мая 2016 г., 16:09
Как на этот шаблон ссылаются тогда?

чтобы достичь того, что вы ищете.Вот 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 от MSDN

Решение Вопроса

который наконец-то сработал для меня. На контроллере, на 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))
 Tommy29 окт. 2012 г., 14:32
Как это отличается от того, что я разместил ниже :( Рад, что у вас это работает!
 Sandra S.29 окт. 2012 г., 18:06
Это отличается тем, что мне не нужно писать 5 строк кода вместо одной, когда мне просто нужно отформатировать число. Ваш пост был действительно полезным и вдохновляющим, спасибо

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
 Sandra S.29 окт. 2012 г., 12:17
Обновление System.Threading.Thread.CurrentThread.CurrentCulture не работало, так как вызывало дополнительные ошибки. Я могу привести пример: когда я пытаюсь преобразовать строку в формате по умолчанию (например, «14543.12») в Number, он выдаст ошибку. Что имеет смысл. В любом случае спасибо за вашу помощь

Ваш ответ на вопрос