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

我想要类似的东西:

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


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

这会使用反射吗?我听说过这个词有点混乱,但我并不熟悉。

最佳答案

内置的帮助器方法使用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"]
    ...
}

关于c# - 如何在自定义HtmlHelper中使用C#对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4686564/

10-15 04:48