Summary
- это действие метод .Это не конструктор.Поэтому DI не имеет к этому никакого отношения.Вместо этого мы наблюдаем поведение подшивки модели по умолчанию.То есть средство связывания модели проанализирует все параметры, которые вы объявите для своего метода действия, и попытается заполнить эти аргументы данными, полученными из параметров формы или строки запроса и значений маршрута.
В вашем конкретном сценарии, так каквы не передаете никакие значения маршрута вашему вызову Html.Action
, все, что он делает, - создает экземпляр класса Cart
- если вы его проверите, вы, вероятно, увидите, что он пуст (никакие свойства не были установлены).
Однако, если бы вы передали значения маршрута в ваш вызов Action
, он заполнил бы этот объект.Например, если Cart
содержит свойство с именем «Size» типа int, и ваш вызов действия выглядит следующим образом:
@Html.Action("Summary", "Cart", new { Size = 5 })
В вашем классе Cart
теперь для свойства Size
установлено значение 5.
(Обратите также внимание, что в этом случае гораздо удобнее использовать метод Action
, а не метод RenderAction
. Как вы видели, RenderAction
предполагает вызов уровня оператора, который требуетэти уродливые фигурные скобки. Action
, с другой стороны, является выражением, а возвращает фактическое встроенное содержимое HTML, и, следовательно, может быть выражено в более сжатой форме.)