2011-06-06 45 views
2

我想將htmlAttributes作爲參數傳遞給我的HtmlHelper,類似於它在 中創建的Html.ActionLink(「linktext」,「Home」,null,new {width =「100px」 }) 如何這個新的{WIDTH = 「100px的」}傳遞給我的方法ASP.NET MVC - 傳遞htmlAttributes作爲參數

public static string SelectCategoryAdminWithAllItem(this HtmlHelper htmlHelper, string name, **???**) 
    { } 

以及如何解析呢?

謝謝

回答

3

我試圖找出這個問題時,通過源MVC2。在MVC2中,他們使用System.Web.Routing中的RouteValueDictionary重載來將對象轉換爲字典,而不是像MVC3中那樣提供輔助方法。

public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes) 
{ 
    return htmlHelper.TextBox(name, value, new RouteValueDictionary(htmlAttributes)); 
} 

有點直覺但這是在2

編輯標準:更新標籤,包括MVC2

5

在對這類問題感興趣時,請始終嘗試查看源代碼。從HtmlHelper.TextBox

public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes) 
{ 
    return htmlHelper.TextBox(name, value, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); 
} 

正如你看到的實施,參數的類型是object,你不能使用匿名類型作爲參數的方法,並object是首選。當解析它,你可以使用HtmlHelper.AnonymousObjectToHtmlAttributes Method

+0

我使用ASP.NET MVC 2.0,而不是3.0 :( – 2011-06-06 12:16:25