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

发布于 2024-10-12 02:37:42 字数 270 浏览 3 评论 0原文

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

我想要类似的内容:

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

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

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

I am trying to use replicate the syntax for most of the standard HtmlHelpers where an object is used to add Html attributes to a generated tag.

I would like to have something like:

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

How do I access the keys of that new object so I can add attributes from the view?

Would this use reflection? I've heard that word thrown around a bit, but I'm not familiar with it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终止放荡 2024-10-19 02:37:42

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

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"]
    ...
}

The built-in helper methods use RouteValueDictionary to convert the object into a dictionary. They also provide two overloads for accepting HTML attributes, one which accepts an object, and one which accepts an 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"]
    ...
}
安穩 2024-10-19 02:37:42

此功能是由 MVC 团队的 Eilon Lipton 创建的。详细信息在这里 - 并下载提供的代码来推出您自己的代码。

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

This ability was created by Eilon Lipton on the MVC Team. Details are here - and download the provided code to roll your own.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文