在视图外部使用 Html.DisplayFor() 或从 DisplayFormat 注释中获取格式化属性

本文关键字:注释 DisplayFormat 或从 获取 属性 格式化 外部 视图 DisplayFor Html | 更新日期: 2023-09-27 18:31:04

我有一个实用程序类,其中包含一个方法,我正在从视图中调用和传递对象。我需要从该方法中调用Html.DisplayFor(),或者只需要一种方法来获取由DisplayFormat数据注释格式化的模型属性。

[DisplayFormat(DataFormatString = "{0:MMMM d, yyyy}")]
System.DateTime ReleaseDate { get; set; }

有没有办法在视图之外实现这一点?我已经尝试过将我的HtmlHelper对象传递给该方法:

public static string GetProductSnippet(Product product, HtmlHelper<List<Product>> helper)
{
    return helper.DisplayFor(p => p.ReleaseDate).ToString();
}

但这行不通,因为我的HtmlHelper对象并不总是具有相同的泛型类型。有没有办法在不使用 HtmlHelper 类的情况下获取属性的格式化版本?

在视图外部使用 Html.DisplayFor() 或从 DisplayFormat 注释中获取格式化属性

可以为该方法使用泛型类型:

public static string GetProductSnippet<T>(Product product, HtmlHelper<T> helper)
{
    return helper.DisplayFor(p => p.ReleaseDate).ToString();
}
var markup = GetProductSnippet<List<Product>>(product, helper);

至于在没有帮助程序的情况下获取代码,可以从 MVC 源代码中获取显示帮助程序的实现并根据需要进行调整