【问题标题】:C# MVC How to initialize ViewDataDictionary with both TemplateInfo and KeyValuePairsC# MVC 如何使用 TemplateInfo 和 KeyValuePairs 初始化 ViewDataDictionary
【发布时间】:2020-01-23 22:50:02
【问题描述】:

我可以使用KeysValues 或名为TemplateInfo 的属性来初始化ViewDataDictionary,但不能同时使用两者。

这两个都行

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# 的最新改进。

【问题讨论】:

    标签: c# asp.net-mvc dictionary asp.net-mvc-4 asp.net-mvc-3


    【解决方案1】:

    这对你有帮助吗?

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

    【讨论】:

    • 谢谢!它的工作。我想知道是否有一种单行方法
    • 你可以创建一个扩展方法public static ViewDataDictionary SetTemplateInfo(this ViewDataDictionary dict, TemplateInfo ti)然后像这样初始化你的对象:Html.RenderPartial("~/Views/_myPartial1.cshtml", Model, new ViewDataDictionary { { "ButtonText", "Hello!" } }.SetTemplateInfo(new TemplateInfo{ HtmlFieldPrefix = "myForm_" }));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多