Как объединить два объекта в C # asp.net mvc3 - PullRequest
2 голосов
/ 14 февраля 2012

У меня есть два объекта, объявленных так:

new {@class = "aClass", bar="bar"}

и

new{foo = "foo"}

Как мне их объединить, чтобы получить этот результат?

{@class = "aClass", bar="bar", foo = "foo"}

(в любом порядке)

Моя цель - объединить дополнительные атрибуты html в пользовательский htmlhelper.

Приветствия

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012
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>
1 голос
/ 13 августа 2012

По сути, вы хотите объединить 2 анонимных объекта.Этот вопрос касается этой темы:

Существует ли простой способ объединения анонимных объектов C #

0 голосов
/ 14 февраля 2012

Предполагая, что два объекта имеют анонимные типы

var a = new { @class = "aClass", bar = "bar" };
var b = new { foo = "foo" };

единственный способ объединить их - создать новый объект, члены которого оба:

var result = new { a.@class, a.bar, b.foo };

Screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...