我创建了一个HTML Helper扩展,该扩展在MVC中调用编辑器模板局部视图(MyView)。
我正在通过对象htmlAttributes参数将其他HTML属性传递给HTML Helper Extension。在HTML Helper Extension中,htmlAttributes被转换为RouteValueCollection(可以在此处使用IDictionary)并存储在ModelProperty对象中:
public static MvcHtmlString TextBoxFor(this HtmlHelper html, ModelProperty prop, object htmlAttributes)
{
prop.ControlHtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
return PartialExtensions.Partial(html, "MyView", prop);
}
在“ MyView”部分视图中,我想呈现控件并使用传递的HTML属性,因此我调用:
Html.TextArea(Model.ControlName, Model.Value, Model.ControlHtmlAttributes);
但是,由于第3个参数应该是'object htmlAttributes',因此该方法起作用了,如何将Model.ControlHtmlAttributes转换为对象htmlAttibutes?
最佳答案
无论如何要回答您的问题:
public static object ToAnonymousObject(this IDictionary<string, object> @this)
{
var expandoObject = new ExpandoObject();
var expandoDictionary = (IDictionary<string, object>) expandoObject;
foreach (var keyValuePair in @this)
{
expandoDictionary.Add(keyValuePair);
}
return expandoObject;
}
关于c# - MVC-将IDictionary或RouteValueDictionary转换为对象htmlAttributes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20075635/