如何将动态对象传递给HtmlHelper.Editor()?

时间:2014-06-02 21:16:30

标签: c# asp.net .net asp.net-mvc

我试图从我的助手类中调用以下Editor方法:

public EditorExtensions {
    public static MvcHtmlString Editor(this HtmlHelper html, string expression, string templateName, object additionalViewData);
}

呼叫的一个例子是:

this.Html.Editor("Name", "TemplateName", new { PropertyId = "Property1" });

这很好用,直到我尝试将动态生成的对象作为additionalViewData参数传递,就像ExpandoObject一样。它不起作用的原因是.NET框架将尝试对传递的对象执行GetProperties()并且ExpandoObject不会检索正确的属性作为属性I&# 39; m在运行时创建时没有在编译时编译。

如何将动态生成的信息传递到additionalViewData参数?

1 个答案:

答案 0 :(得分:2)

additionalViewData参数在重载中也经常有一个克隆,它不接受object但只接受一些Dictionary<,>类类型。

嗯,你的ExpandoObject非常善于投射到该词典类型,请亲自看看。

this.Html.Editor("Name", "TemplateName",
    (IDictionary<string,object>)YourExpandoObject);

这样的事情应该有用。