Как передать строку в формате валюты из контроллера в представление? - PullRequest
0 голосов
/ 16 декабря 2010

У меня есть отформатированная строковая переменная, в которую передается переменная ViewData.Мой контроллер в основном выглядит так:

if(ModelState.IsValid)
{
    string total = "$2.00";
    ViewData["totalSales"] = total;
    return View();
}

У меня есть вспомогательная функция html, на мой взгляд, вот так:

<%: Html.Label(ViewData["totalSales"].Tostring()) %>

, однако движок asp.net mvc генерирует это:

<label for="$2_00">00</label>

Я просто хочу передать денежную стоимость представлению и отобразить ее.Похоже, что десятичная дробь нарушает значение.Однако должен быть способ обойти это.Я делаю здесь ошибку noob?


Ну, я смог обойти это, сделав это:

<p><%: ViewData["totalSales"].ToString() %> </p>

Но это не объясняет, почему десятичная дробь в строке вызываетпотери данных.Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

передайте вашу итоговую переменную в виде десятичной дроби:

decimal total = 2.0;
ViewData["totalSales"] = total;
return View();

, затем, по вашему мнению, визуализируйте метку следующим образом:

<%: Html.Label(string.Format("{0:C2}", ViewData["totalSales"])) %>
0 голосов
/ 16 декабря 2010

Использовать String.Format () с валютой

Ваша ошибка в том, что платформа автоматически экранирует / преобразует специальные символы (например, "."), Когда они превращаются в атрибуты HTML. Это по замыслу.

Кроме того, почему вы передаете жестко закодированную строку через ViewData? Это вычислено из ваших моделей? Возможно, вы не правильно используете Label .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...