Я использую MVC3 с синтаксисом Razor, и я перехожу к примеру в книге Apress «Pro ASP.Net MVC 3 Framework» (что очень хорошо). В ней автор имеет этот бит в файле _Layout.cshtml:Значения параметров конструктора по умолчанию в ASP.Net MVC?
<body>
<div id="header">
@{Html.RenderAction("Summary", "Cart");}
<div class="title">SPORTS STORE</div>
</div>
<div id="categories">
@{ Html.RenderAction("Menu", "Nav"); }
</div>
<div id="content">
@RenderBody()
</div>
</body>
Мой вопрос связан с классом CartController. Я вижу, что он передал объект Cart в своем конструкторе, но код в приведенном выше фрагменте _Layout.cshtml не отображается, если он вызывается RenderAction()
?
CartController фрагмент кода:
public ViewResult Summary(Cart cart) {
return View(cart);
}
Когда я отладить этот метод телеге объект является на самом деле прошло, но я не вижу, где он и откуда. Этот пример кода использует Ninject в качестве контейнера для инъекций зависимостей, но я не могу найти никаких доказательств в конфигурации, что он знает что-либо о классе Cart. Есть ли в MVC механизм «значение по умолчанию»?
Вы правы, Резюме() не конструктор - мои извинения. И спасибо за потрясающее объяснение поведения повязки модели по умолчанию. – larryq
Боковое примечание: не является ли 'RenderAction' лучше, чем' Action', потому что он отображает непосредственно в выходной поток (вместо построения длинной строки)? Я думаю, это все еще довольно неважно ...микро-оптимизации. –