Asp.net mvc 3 如何在自定义帮助程序中使用DisplayTemplate

Asp.net mvc 3 如何在自定义帮助程序中使用DisplayTemplate,asp.net-mvc-3,templates,helpers,Asp.net Mvc 3,Templates,Helpers,我编写了一个grid helper GridHelper.cs,它适用于所有模型 此帮助器有一个渲染每行的方法,如下所示: private void RenderRow(HtmlTextWriter writer, T item) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); foreach (var col in _columns) { writer.RenderBeginTag(HtmlText

我编写了一个grid helper GridHelper.cs,它适用于所有模型

此帮助器有一个渲染每行的方法,如下所示:

private void RenderRow(HtmlTextWriter writer, T item)
{
   writer.RenderBeginTag(HtmlTextWriterTag.Tr);          

   foreach (var col in _columns)
   {
     writer.RenderBeginTag(HtmlTextWriterTag.Td);
     var value = typeof(T).GetProperty(col.FieldName).GetValue(item, null) ?? String.Empty;                
     writer.Write(value.ToString());
     writer.RenderEndTag();
   }

   writer.RenderEndTag();
}
另外,我在文件夹:/Views/Shared/DisplayTemplates中有一些DisplayTemplates 例如布尔值、日期等

如何更改line writer.Writevalue.ToString;要使用该模板吗?
或者需要对此行进行哪些更改才能在我的网格单元格中使用显示模板?

使用此示例解决该问题

public class TestCol<T>
    {        
        public MvcHtmlString RenderObj<T, TValue>(HtmlHelper<T> html, Expression<Func<T, TValue>> expression)
        {
            return html.DisplayFor(expression);
        }
    }


    public static class testHelper
    {

        //Expression<Func<TModel, TValue>> expression
        public static MvcHtmlString TestStringHelper<TModel, TValue>(this HtmlHelper<TModel> html, TValue item)
        {
            var y = new TestCol<TModel>();
            var x = y.RenderObj(html, modelitem => item);
            return x;
        }

        public static MvcHtmlString TestModelHelper<T>(this HtmlHelper<T> html, T item)
        {
            var list = typeof(T).GetProperties().Where(p => p.PropertyType.Namespace == "System");
            string str = "<table border=1><tr>";
            foreach (var p in list)
            {
                var o = p.GetValue(item, null);
                var xr = html.TestStringHelper(o).ToString();
                if (string.IsNullOrWhiteSpace(xr)) xr = o.ToString();
                str += string.Format("<td>{0}</td>", xr);
            }
            str += "</tr></table>";

            return new MvcHtmlString(str);
        }
    }