Преобразование / анализ результатов запроса в строку .NET Core - PullRequest
0 голосов
/ 05 июня 2019

Я использую ASP.NET Core 2.2.Я хочу преобразовать данные из моей базы данных в строку.Это моя Блюдо модель

public class Dish
 {
     public int DishID { get; set; }
     public decimal? DishPrice { get; set; }
 }

А это MyController

public class MyController : Controller
{
    public IActionResult MyView() 
    {
         var Dishes = _context.Dish.OrderBy(d =>d.DishID).ToList();
         return View(Dishes)
    }
}

И наконец вот MyView

@model Dish
  foreach(var a in Model)
  {
     <h1> @a.DishPrice </h1>
  }

Проблема в том, что когда я проверяю тип данных DishPrice, он является десятичным.Я хочу, чтобы все данные, которые контроллер передает представлению, были строкой.

1 Ответ

3 голосов
/ 05 июня 2019

Вы можете преобразовать @Model перед итерацией.Похоже, что ваша модель должна быть IQueryable<Dish> :

<strike>@model IQueryable<Dish>

foreach(var a in Model.Select(d => new {DishId = d.DishID, DishPrice = String.Format("{0:00000.00}",d.DishPrice)}))
{
    <h1> @a.DishPrice </h1>
}
</strike>

Как подсказывает @ Panagiotis Kanavos , приведенный выше код можно записать в виде:

@a.DishPrice?.ToString("00000.00")

Хотя это возможно, однако я считаю, что добавление [DisplayFormat(DataFormatString = "{0:00000.00}")] является самым простым способом:

public class Dish
{
    public int DishID { get; set; }

    [DisplayFormat(DataFormatString = "{0:00000.00}")]
    public decimal? DishPrice { get; set; }
}
...