初始化语法:new ViewDataDictionary {{“Name”,“Value”}}
我正在寻找一种方法将ViewDataDictionary传递给ASP.NET MVC中的部分视图,我来到这个语法:
new ViewDataDictionary { { "Name", "Value" } }
我对这里的初始化语法有点困惑。 任何人都可以向我解释一下吗?
ViewDataDictionary
实现IDictionary
。
IDictionary
本质上是KeyValuePair
的集合。
您的ViewDataDictionary
初始化程序(外部花括号)包含另一组花括号,表示KeyValuePair
初始化程序。
在这个答案中解释了这是可能的原因。
您可以通过逗号分隔KeyValuePair
初始值设定项来添加多个项目:
var data = new ViewDataDictionary { { "Name", "Value" }, { "Name2", "Value2" } };
与…一样:
var data = new ViewDataDictionary { new KeyValuePair("Name", "Value"), new KeyValuePair("Name2", "Value2") };
本质上,内部花括号是初始化KeyValuePair
对象的很好的语法。
我用扩展方法解决了这个问题:
/// /// Use this extension method to create a dictionary or objects /// keyed by their property name from a given container object /// /// Anonymous name value pair object /// public static Dictionary ToDictionary(this object o) { var dictionary = new Dictionary(); foreach (var propertyInfo in o.GetType().GetProperties()) { if (propertyInfo.GetIndexParameters().Length == 0) { dictionary.Add(propertyInfo.Name, propertyInfo.GetValue(o, null)); } } return dictionary; }
还有一个Html Helper扩展:
/// /// When viewData is null, we just return null. Otherwise, we /// convert the viewData collection to a ViewDataDictionary /// /// HtmlHelper provided by view /// Anonymous view data object /// public static ViewDataDictionary vd(this HtmlHelper htmlHelper, object viewData) { if (viewData == null) return null; IDictionary dict = viewData.ToDictionary(); //We build the ViewDataDictionary from scratch, because the // object parameter constructor for ViewDataDictionary doesn't // seem to work... ViewDataDictionary vd = new ViewDataDictionary(); foreach (var item in dict) { vd[item.Key] = item.Value; } return vd; }
使用剃刀文件:
上述就是C#学习教程:初始化语法:new ViewDataDictionary {{“Name”,“Value”}}分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
@Html.Partial("~/Some/Path.cshtml", Model, Html.vd(new { SomeKey = SomeObj }))
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/999817.html