Converting/parsing 查询结果为字符串 .NET Core

Converting/parsing query results to string .NET Core

我正在使用 ASP.NET Core 2.2。我想将从数据库中获取的数据转换为字符串。 这是我的 Dish 模型

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 数据类型时,它是十进制的。我希望控制器传递给视图的所有数据都是字符串。

您可以在迭代前转换 @Model 。似乎您的模型应该是 IQueryable<Dish> :

@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>
}

根据@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; }
}