我有一个自定义的htmlhelper扩展名,我需要在此助手内使用html.display。如何像在视图中一样使用它?
我有实体,所有这些都从具有ID,CANCETON等的基础上继承...
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
您可以使用内置的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)