у вас работает решение по предоставленной ссылке?
Я не мог заставить его работать. То есть я не смог заставить ViewData ["MainView"] передать данные из Layout.cshtml в частичное представление. По-видимому, это особенность, так как предполагается, что каждое представление имеет собственный объект ViewData. Кажется, ViewData не является глобальным, как я думал. Таким образом, то, что я получаю в ViewData ["MainView"] из Layout в моем частичном представлении, равно нулю ...... В конце концов я нашел способ обойти это и смог передать ссылку на страницу из Layout в Partialview через @Html. Вызов действия из Layout -> Controller -> PartialView. Мне удалось получить частичное представление для доступа и записи в правильном разделе визуализации. Однако я хочу вызывать одно и то же частичное представление много раз в моем Layout.cshtml. Последующий вызов того же самого Partialview снова в Layout не работает, так как ссылка на layout изменилась с момента первого вызова и обновления раздела render. Итак, код выглядит так:
Layout.cshtml:
@RenderSection("Top", false)
@Html.Action("Load", "Home", new { viewname = "_testPartialView", pageref = this })
@Html.Action("Load", "Home", new { viewname = "_testPartialView", pageref = this })
Частичное представление:
@Model Models.testModel
@Model.Content
@{
var md = (System.Web.Mvc.WebViewPage)@Model.pageRef;
@*This check fails in subsequent loads as we get null*@
if(md.IsSectionDefined("Footer")) {
md.RenderSection("Footer");
}
else {
md.DefineSection("Footer", () => { md.WriteLiteral("<div>My Contents</div>"); });
}
}
}
Контроллер:
public ActionResult Load(string viewname, System.Web.Mvc.WebViewPage pageRef)
{
var model = new Models.testModel { Content = new HtmlString("time " + i++.ToString()), pageRef = pageRef };
return PartialView(viewname, model);
}