如何在自定义HtmlHelper中使用C#对象?

时间:2011-01-13 23:35:51

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

我正在尝试使用复制大多数标准HtmlHelper的语法,其中object用于将Html属性添加到生成的标记。

我希望有类似的东西:

<%: Html.MyCustomHelper("SomeValue", new { id="myID", @class="myClass" })%>

如何访问该新对象的键,以便从视图中添加属性?

这会使用反射吗?我听说过这个词,但我不熟悉它。

2 个答案:

答案 0 :(得分:4)

内置辅助方法使用RouteValueDictionaryobject转换为字典。它们还提供了两个用于接受HTML属性的重载,一个接受object,另一个接受IDictionary<string, object>

public static string MyCustomHelper(this HtmlHelper htmlHelper, string someValue, object htmlAttributes)
{
    return htmlHelper.MyCustomHelper(someValue, new RouteValueDictionary(htmlAttributes));
}

public static string MyCustomHelper(this HtmlHelper htmlHelper, string someValue, IDictionary<string, object> htmlAttributes)
{
    // Get attributes with htmlAttributes["name"]
    ...
}

答案 1 :(得分:0)

此能力由Eilon Lipton在MVC团队中创建。详细信息在这里 - 并下载提供的代码以自行推送。

http://weblogs.asp.net/leftslipper/archive/2007/09/24/using-c-3-0-anonymous-types-as-dictionaries.aspx