在布局中,调用MVC子操作。但是,partialView结果未显示在RenderSection中(“userProfile”,required:false)。但Watch窗口显示结果包含数据。感谢。
控制器的行动
[ChildActionOnly]
public ActionResult GetUserProfile()
{
var vm = base.appVM.User;
return PartialView("UserProfilePartial", vm);
}
UserProfilePartial.cshtml
@model myApp.viewModel
@section userProfile{
<div>@string.Format("{0}, {1}", Model.lastName, Model.firstName)</div>
@foreach (var item in Model.Locations)
{
<div>
<ul class="row">
<li class="cell">@item.LocType</li>
<li class="cell">@item.LocName</li>
<li class="cell">@item.UserRole</li>
</ul>
</div>
}
}
Layout.cshtml
<body>
<header>
<div class="content-wrapper">
<div class="float-left">
<p class="site-title">@Html.ActionLink("Home", "Index", "Home")</p>
</div>
@Html.Action("GetUserProfile","User")
<div class="float-right">
@RenderSection("userProfile", required: false)
</div>
@Html.Action("Index", "Menu");
<div class="menu">
@RenderSection("menu", required:false)
</div>
</div>
</header>
@RenderBody()
</body>
答案 0 :(得分:0)
主要问题是您在没有布局的情况下渲染局部视图。渲染局部视图时,它只会渲染您指定的代码,但是您创建了一个除了Layout.cshtml之外没有渲染的部分,但是不会在任何地方调用布局。要解决此问题,您必须将布局代码添加到局部视图中。
@model myApp.viewModel
@{
Layout = "~/Views/Shared/Layout.cshtml"; // <---- adding the layout
}
@section userProfile{
<div>@string.Format("{0}, {1}", Model.lastName, Model.firstName)</div>
@foreach (var item in Model.Locations)
{
<div>
<ul class="row">
<li class="cell">@item.LocType</li>
<li class="cell">@item.LocName</li>
<li class="cell">@item.UserRole</li>
</ul>
</div>
}
}
考虑到这一点后,我认为你应该使用@ Html.Partial(“”); 不渲染部分。 请查看此链接,例如http://mvc4beginner.com/Tutorial/MVC-Partial-Views.html
答案 1 :(得分:0)
您无法在部分视图中使用部分。只有视图支持使用部分。部分视图仅用于显示不指定函数可以执行的其他功能的内容。有与之相关的类似线程,请查看here。
答案 2 :(得分:0)
好的,我是怎么做的
在主_ViewStart.cshtml我把这段代码
@{
if (Request["Partial"] == null)
{
//return full view
Layout = "~/Views/Shared/_Layout.cshtml";
}
else
{
//this will give just a partialview with the bodyContent
Layout = "~/Views/Shared/_LayoutPartial.cshtml";
}
}
然后我可以返回完整视图,它将返回基于部分请求的视图(href=http://www.d.com/account/login?=partial=partial
)
它只是有效!
通过添加部分布局部分和其他部分的方式 因为毕竟它只是一个常规的布局