2010-09-07 157 views
1

任何人都可以建議是否可以在新的自定義Html幫助器中重新使用現有的HtmlHelper。例如:是否可以在自定義助手中使用HtmlHelper對象?

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

上面是一個簡單的例子,但本質上我想組格式化爲一組HTML輔助呈現視圖的一些邏輯&。這個視圖會在幾個地方使用,因此我想重新使用這些代碼。然而,在我目前所有的嘗試中,我一直無法訪問'CheckBox'或'BeginForm'等方法。也許我錯誤地使用了HtmlHelper對象?

有誰知道這是否可以做到?

謝謝,馬特

+0

沒有得到足夠的代表處,以編輯問題,在你的例子中輕微的打字讓我暫時停下來。在你的返回聲明中,你錯誤地在我猜測的「HtmlHelper」的末尾添加了「t」。 – 2010-09-07 09:01:21

回答

1

你下面使用補充的嗎?

using System.Web.Mvc.Html; 

您還可以使用通用的助手:

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

但你並不需要調用靜態類,你可以直接使用助手:

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); 
    } 
} 
+0

我錯過了使用。非常感謝您的幫助。 – Matt 2010-09-07 10:01:43

3

在你的榜樣,我認爲你需要做的:

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