两个目标我已经声明,像这样两个对象:如何合并在C#asp.net MVC3
new {@class = "aClass", bar="bar"}
和
new{foo = "foo"}
我如何将它们结合起来,所以我得到这样的结果?
{@class = "aClass", bar="bar", foo = "foo"}
(以任意顺序)
我的目标是额外的HTML属性结合在一个自定义的HtmlHelper。
干杯
两个目标我已经声明,像这样两个对象:如何合并在C#asp.net MVC3
new {@class = "aClass", bar="bar"}
和
new{foo = "foo"}
我如何将它们结合起来,所以我得到这样的结果?
{@class = "aClass", bar="bar", foo = "foo"}
(以任意顺序)
我的目标是额外的HTML属性结合在一个自定义的HtmlHelper。
干杯
object x = new { @class = "aClass", bar = "bar" };
object y = new { foo = "foo" };
var htmlAttributes = new RouteValueDictionary(x);
foreach (var item in new RouteValueDictionary(y))
{
htmlAttributes[item.Key] = item.Value;
}
// at this stage htmlAttributes represent an IDictionary<string, object>
// that will contain the 3 values and which could be passed
// along to the overloaded versions of the standard helpers
// for example:
var link = htmlHelper.ActionLink("link text", "foo", null, htmlAttributes);
// would generate:
// <a href="/home/foo" class="aClass" bar="bar" foo="foo">link text</a>
假设两个对象匿名类型
var a = new { @class = "aClass", bar = "bar" };
var b = new { foo = "foo" };
结合它们是创建具有两者的成员的新对象的唯一方式:
var result = new { [email protected], a.bar, b.foo };
这很好,除非我没有第一堂课的定义。所以我不能选择它的属性。 – MrJD 2012-02-14 21:32:15
我已经试过凯尔芬利的Merge Two Objects into an Anonymous Type,它工作的很完美。
随着TypeMerger
合并很简单,只要
var obj1 = new {foo = "foo"};
var obj2 = new {bar = "bar"};
var mergedObject = TypeMerger.MergeTypes(obj1 , obj2);
就是这样,你得到的合并对象,除此之外,还有一项条款,忽视特定的属性。您也可以为MVC3使用相同的功能。
基本上你想要的是合并2个匿名对象。 这个问题是关于这个问题:
你能指望什么发生,如果它们包含重复的(意思是两个集合包含相同的属性)? – 2012-02-14 06:25:42
有没有真的想过,因为我不指望它发生。但这是一个很好的观点。我想我必须重写它。 – MrJD 2012-02-14 21:33:06