我正在尝试使用复制大多数标准HtmlHelper的语法,其中object
用于将Html属性添加到生成的标记。
我希望有类似的东西:
<%: Html.MyCustomHelper("SomeValue", new { id="myID", @class="myClass" })%>
如何访问该新对象的键,以便从视图中添加属性?
这会使用反射吗?我听说过这个词,但我不熟悉它。
答案 0 :(得分:4)
内置辅助方法使用RouteValueDictionary
将object
转换为字典。它们还提供了两个用于接受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团队中创建。详细信息在这里 - 并下载提供的代码以自行推送。