是否可以在自定义助手中使用HtmlHelper对象?

时间:2010-09-07 08:56:36

标签: c# asp.net-mvc html-helper

是否有人能够建议是否可以在新的自定义Html帮助程序中重用现有的HtmlHelper。例如:

public static class GridHelper
{
    public static string RenderGrid(this HtmlHelper helper, Object routeParams)
    {          
        return HtmlHelper.BeginForm(routeParams);
    }
}

上面是一个简单的例子,但基本上我想将一些逻辑和组合分组。格式化一组渲染视图的html助手。这个视图将在几个地方使用,因此我想重新使用代码。但是在我目前的所有尝试中,我都无法访问“CheckBox”或“BeginForm”等方法。也许我错误地使用了HtmlHelper对象?

有人知道是否可以这样做吗?

谢谢,马特

2 个答案:

答案 0 :(得分:3)

在您的示例中,我认为您需要这样做:

public static class GridHelper 
{ 
    public static string RenderGrid(this HtmlHelper helper, Object routeParams) 
    {           
        return helper.BeginForm(routeParams); 
    } 
} 

答案 1 :(得分:1)

您是否添加了以下内容?

using System.Web.Mvc.Html;

您也可以使用通用助手:

public static string RenderGrid<TModel, TProperty>(this HtmlHelper helper<TModel>, Expression<Func<TModel, TProperty>> displayExpression, Object routeParams)

但是你不需要调用静态类,你可以直接使用helper:

public static class GridHelper
{
    public static string RenderGrid(this HtmlHelper helper, Object routeParams)
    {          
        return helper.CheckBox("foo");
    }
}

public static string RenderGrid<TModel, TProperty>(this HtmlHelper helper<TModel>, Expression<Func<TModel, TProperty>> expr, Object routeParams)
{
    public static string RenderGrid(this HtmlHelper helper, Object routeParams)
    {          
        return helper.CheckBoxFor( expr );
    }
}