gpt4 book ai didi

c# - 在 MVC 3 中,我无法让 @Html.DisplayFor 呈现格式化字符串

转载 作者:可可西里 更新时间:2023-11-01 08:22:11 29 4
gpt4 key购买 nike

我希望这是一个非常简单的问题,尽管经过大量谷歌搜索后,我还是无法解决。

我正在使用 MVC 3 开发购物车网站,并使用代码优先 Entity Framework 。我发送的模型是一个 Product 对象列表,每个对象都包含这个属性:

[Required(ErrorMessage = "This is a required field.")]
[DataType(DataType.Currency)]
[Range(1.00, 500.00, ErrorMessage = "Products can not be free.")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayName("Price")]
public double Price { get; set; }

我希望 DisplayFormat 属性会导致 View 中的以下行将值格式化为货币(item 是循环中的产品对象):

@Html.DisplayFor(modelItem => item.Price)

但这根本不应用格式。到目前为止,我能够让它工作的唯一方法是改用它:

@String.Format("{0:C}", item.Price)

但如果可能的话,我宁愿使用@Html.DisplayFor,因为它旨在处理空值之类的事情。我知道它会是 0 或更多。事实上,通过验证,它总是一定数量 - 但我想确保在我继续之前没有更正确的方法来做这件事。

如有任何相关信息,我们将不胜感激!

更新

Darin 回答并指出它确实有效,这让我重新审视我实际发送到 View 的内容。我意识到虽然我有一个名为 ProductModel 的类,它具有 DisplayFormat 属性,但实际上我返回的是另一个包含产品列表的模型。这称为 ProductListModel,我意识到它返回了 Product 数据类的列表 - 而不是 ProductModel 类!

所以最后其实很简单。真希望我没有在上面浪费半个晚上。达林,感谢你鼓励我回去检查一下!

最佳答案

But this doesn't apply the formatting at all.

哦,您一定是做错了什么,因为 DisplayFormat 属性应该起作用。例如:

型号:

public class MyViewModel
{
[Required(ErrorMessage = "This is a required field.")]
[DataType(DataType.Currency)]
[Range(1.00, 500.00, ErrorMessage = "Products can not be free.")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayName("Price")]
public double Price { get; set; }
}

Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Price = 0.56
};
return View(model);
}
}

View (~/Views/Home/Index.cshtml):

@model MyViewModel
@Html.DisplayFor(x => x.Price)

当我运行这个应用程序时,我得到了完全符合预期的 $0.56

那么是什么给了?您的场景与我的场景有何不同?

关于c# - 在 MVC 3 中,我无法让 @Html.DisplayFor 呈现格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7312529/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com