首页 > 解决方案 > 将查询结果转换/解析为字符串 .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 数据类型时,它是十进制的。我希望控制器传递给视图的所有数据都是一个字符串。

标签: asp.netasp.net-coreef-core-2.0

解决方案


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

@model IQueryable<Dish>

foreach(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")

尽管这是可能的,但是,我相信添加 a[DisplayFormat(DataFormatString = "{0:00000.00}")]是最简单的方法:

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

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

推荐阅读