C# 如何将自定义参数传递给MVC html.routeurl中的函数?

C# 如何将自定义参数传递给MVC html.routeurl中的函数?,c#,asp.net-mvc,asp.net-mvc-4,extension-methods,C#,Asp.net Mvc,Asp.net Mvc 4,Extension Methods,我已经为Html助手库编写了一个小的扩展方法,如下所示: public static MvcHtmlString Image(this HtmlHelper htmlHelper, string url, string alt) { var img = new TagBuilder("img"); img.MergeAttribute("src", url); img.MergeAttribute("alt", alt); return new MvcHtmlSt

我已经为Html助手库编写了一个小的扩展方法,如下所示:

public static MvcHtmlString Image(this HtmlHelper htmlHelper, string url, string alt)
{
    var img = new TagBuilder("img");
    img.MergeAttribute("src", url);
    img.MergeAttribute("alt", alt);
    return new MvcHtmlString(img.ToString(TagRenderMode.SelfClosing));
}
我想更改它,以便可以根据需要添加参数。比如:

public static MvcHtmlString Image(this HtmlHelper htmlHelper, string url, object htmlParameters)
{
    var img = new TagBuilder("img");
    img.MergeAttribute("src", url);

    //Now I would like to extract the properties (and their values) from the object
    //and add them to img.

    return new MvcHtmlString(img.ToString(TagRenderMode.SelfClosing));
}
我想将此函数设置为通用函数,并传递一个带有自定义属性的
对象
,然后将这些属性应用于
img
标记。就像我们将
htmlParameters
传递给
ActionLink
helper方法一样

@Html.ActionLink("link text", "actionName","controllerName", new {@class = "class"})

这有什么诀窍?

您可以使用以下代码提取它们:

var attributes = (IDictionary<string, object>) HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)
img.MergeAttributes<string, object>(attributes, replaceExisting:true);
var attributes=(IDictionary)HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)
img.MergeAttributes(attributes,replaceExisting:true);
希望这有帮助