Другой вариант - использовать вместо этого метод RenderAction
, который вызовет действие (либо на текущем контроллере, либо, если вы также указали имя контроллера, этот контроллер), которое затем может быть построено данные меню для вас, и вызвать ваш частичный вид ascx:
Так что на моей главной странице я могу иметь:
<% Html.RenderAction("MenuArchiveList"); %>
Тогда в моем контроллере:
public ActionResult MenuArchiveList() {
return PartialView("BlogArchiveList",
_BlogRepository.GetArchiveYearPostCounts());
}
Затем успешно находит пользовательский элемент управления \Views\Shared\BlogArchiveList.ascx
Если вы хотите, чтобы ваше действие вызывалось только в контексте частичного представления, вам следует украсить его ChildActionOnlyAttribute
.
Это было добавлено в System.Web.Mvc в версии 2 из пространства имен "futures" Microsoft.Web.Mvc.