我有一个自定义的HtmlHelper扩展,我需要在这个帮助器中使用Html.DisplayFor。如何在视图中使用它?
我有实体,所有实体都继承自BaseEntity,它有Id,CreatedOn等......
public class BaseEntity
{
[Key]
public long Id { get; set; }
[Display(Name = "Created On"), DisplayFormat(DataFormatString = "{0:dd.MM.yyyy HH:mm}")]
public DateTime CreatedOn { get; set; }
[Display(Name = "Updated On"), DisplayFormat(DataFormatString = "{0:dd.MM.yyyy HH:mm}")]
public DateTime? UpdatedOn { get; set; }
}
助手:
public static class InfoExtensions
{
public static IHtmlString Info(this HtmlHelper helper, BaseEntity m)
{
var sb = new StringBuilder();
sb.Append($"{Html.DisplayNameFor(m.CreatedOn)}: {Html.DisplayFor(m.CreatedOn)}");
sb.Append($"{Html.DisplayNameFor(m.UpdatedOn)}: {Html.DisplayFor(m.UpdatedOn)}");
return new HtmlString(result.ToString());
}
}
我试图输出一个html结果,如:
Created On: 15.04.2017 13:28
Updated On: 18.04.2017 15:36
答案 0 :(得分:2)
您可以使用内置的HtmlHelper
方法(请注意,您需要包含using System.Web.Mvc.Html;
)
public static MvcHtmlString InfoFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
{
StringBuilder html = new StringBuilder();
TagBuilder bold = new TagBuilder("b");
bold.InnerHtml = helper.DisplayNameFor(expression);
html.Append(bold);
html.Append(helper.DisplayFor(expression));
return MvcHtmlString.Create(html.ToString());
}
在视图中
@Html.InfoFor(m => m.CreatedOn)