我有一个实用程序类,其中包含一个方法,我可以从视图中调用和传递一个对象。我需要在该方法中调用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
类的情况下获取属性的格式化版本?
答案 0 :(得分:1)
您可以为该方法使用泛型类型:
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源代码中获取显示帮助程序的实现,并根据您的需要进行调整