gpt4 book ai didi

c# - 在自定义帮助程序中将匿名 (htmlAttributes) 转换为 IDictionary 时出错

转载 作者:行者123 更新时间:2023-11-30 14:04:01 27 4
gpt4 key购买 nike

我正在尝试使用一个自定义助手,它使用在 Is there an ASP.NET MVC HtmlHelper for image links? 中找到的示例创建链接.

继续假设此代码实际运行,我不确定问题出在哪里。我是匿名类型和 MVC 的新手,所以我假设我遗漏了一些非常明显的东西。

我的代码是这样的:

        public static string ImageLink(this HtmlHelper htmlHelper, string imgSrc, string alt, string actionName, string controllerName, object imgHtmlAttributes)
{
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
TagBuilder imgTag = new TagBuilder("img");
imgTag.MergeAttribute("src", imgSrc);
imgTag.MergeAttributes((IDictionary<string, string>)imgHtmlAttributes, true);
string url = urlHelper.Action(actionName, controllerName);

TagBuilder imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml = imgTag.ToString();

return imglink.ToString();
}

查看代码是这样的:

<%= Html.ImageLink("../../imgs/details_icon", "View details", "Details", "Tanque", new { height = "5", width = "5" }) %>

异常(exception)情况:

Unable to cast object of type '<>f__AnonymousType0`2[System.String,System.String]' to type 'System.Collections.Generic.IDictionary`2[System.String,System.String]'.

最佳答案

内部 MVC 使用 RouteValueDictionary 将对象转换为 Dictionnary,因此只需更改

imgTag.MergeAttributes((IDictionary<string, string>)imgHtmlAttributes, true);

imgTag.MergeAttributes(new RouteValueDictionary(imgHtmlAttributes), true);

关于c# - 在自定义帮助程序中将匿名 (htmlAttributes) 转换为 IDictionary 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com