C# MVC 如何使用 TemplateInfo 和 KeyValuePairs 初始化 ViewDataDictionary

C# MVC How to initialize ViewDataDictionary with both TemplateInfo and KeyValuePairs

我可以用 KeysValues 初始化一个 ViewDataDictionary 或一个叫做 TemplateInfo 的 属性 但不能同时初始化两者。

这两个都行

Html.RenderPartial("~/Views/_myPartial1.cshtml", Model, new ViewDataDictionary
{
    TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "myForm_" }
});

或者这个有效

Html.RenderPartial("~/Views/_myPartial1.cshtml", Model, new ViewDataDictionary
{
    { "ButtonText", "Hello!" }
});

但不是两者都

Html.RenderPartial("~/Views/_myPartial1.cshtml", Model, new ViewDataDictionary
{
    TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "myForm_" },
    { "ButtonText", "Hello!" }
});

我收到一个错误--- "Invalid initializer member declarator"

我猜这可能适用于其他类型的 Dictionary / KeyValuePair 子 类,所以这个问题的更一般形式可能是...

“是否有使用其成员和附加属性初始化字典子类的捷径?
如果没有,那么有什么简单的选择吗?"

我们工作时仍在使用 .Net 4.5,因此我可能无法访问 C# 的最新改进。

这对你有帮助吗?

var dict = new ViewDataDictionary
{
    { "ButtonText", "Hello!" }
};
dict.TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "myForm_" };

Html.RenderPartial("~/Views/_myPartial1.cshtml", Model, dict);