【发布时间】:2019-06-05 07:42:15
【问题描述】:
我正在使用 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 数据类型时,它是十进制的。我希望控制器传递给视图的所有数据都是字符串。
【问题讨论】:
-
为什么你需要它成为一个字符串?如果你真的需要的话,你可以把它转换成另一个模型,把它们作为字符串,但是为什么视图不能把它们转换成需要的呢?
-
因为如果管理员添加了一个像 002300 这样的数字的 DishPrice,十进制和整数将删除 2300 之前的零。所以 MyView 显示 2300 而不是 002300。如果我在模型中注册它使用字符串类型不可能对其进行数学运算
-
为什么前面的零对价格很重要?如果它始终是多个数字,您可以将其格式化。或者你必须以两种形式保存它。
-
创建一个适合您需要的 ViewModel,并在加载数据后从您的 DB-Model 转换为您的 ViewModel。然后事情就完成了,你可以在你的 ViewModel 中进行你需要的每一次转换。这样做你也将你的数据库层与你的视图层分开。目前你正在混合东西。
-
@ArianShahalami 我怀疑您需要澄清要求。数字中的前导零无关。如果您想以某种方式显示数字,请使用
String.Format或ToString()并在视图本身中指定您想要的格式。没有理由将DishPrice更改为字符串
标签: asp.net asp.net-core ef-core-2.0