C# 如何在主布局文件中渲染局部视图部分
我正在使用asp.NETMVC5 我有一个_布局文件,如下所示:C# 如何在主布局文件中渲染局部视图部分,c#,asp.net-mvc,asp.net-mvc-5,asp.net-mvc-partialview,C#,Asp.net Mvc,Asp.net Mvc 5,Asp.net Mvc Partialview,我正在使用asp.NETMVC5 我有一个_布局文件,如下所示: <!DOCTYPE html> <html lang="en"> <head> @Html.Partial("_Head") @RenderSection("styles", required: false) </head> <body> @RenderBody() @RenderSection("scripts", required:
<!DOCTYPE html>
<html lang="en">
<head>
@Html.Partial("_Head")
@RenderSection("styles", required: false)
</head>
<body>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
@Html.Partial(“_Head”)
@RenderSection(“样式”,必填项:false)
@RenderBody()
@RenderSection(“脚本”,必需:false)
我的主要观点是:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
Title = "mainView"
}
<div class="partialcontents" data-url="/user/UserList"></div>
$(document).ready(function (e) {
$(".partialcontents").each(
function (index, item) {
var url = $(item).data("url");
if (url && url.length > 0) {
$(item).load(url, function () { $(this).css("background-image", "none"); });
}
}
);
});
@{
Layout=“~/Views/Shared/_Layout.cshtml”;
Title=“mainView”
}
$(文档).ready(函数(e){
$(“.partialcontents”)。每个(
功能(索引、项目){
var url=$(项目).data(“url”);
如果(url&&url.length>0){
$(item).load(url,函数(){$(this).css(“背景图像”,“无”);});
}
}
);
});
以下是我的部分观点:
@{
}
<p> Partial View</p>
@section scripts
{
@Scripts.Render("~/bundles/script/datatable")
}
My controller that renders the partial view:
[Authorize]
public ActionResult UserList(UsersViewModel model, string sortOrder, string currentFilter, string searchString, int? page)
{
.... removed for simplicity
return PartialView("_UserList", new UsersViewModel()
{
Users = users.ToPagedList(pageNumber, pageSize)
});
}
@{
}
局部视图
@节脚本
{
@Scripts.Render(“~/bundles/script/datatable”)
}
渲染局部视图的我的控制器:
[授权]
public ActionResult用户列表(UsersViewModel模型、字符串排序器、字符串currentFilter、字符串搜索字符串、int?页)
{
…为了简单起见,删除了
返回PartialView(“\u UserList”,new UsersViewModel())
{
Users=Users.ToPagedList(页码、页面大小)
});
}
所以现在我的问题是部分视图中的部分没有在主布局文件中呈现。我明白为什么我认为
这是因为我正在另一个控制器中渲染它。然后把它传下去
但我如何才能做到这一点呢?您应该放置:
@section scripts
{
@Scripts.Render("~/bundles/script/datatable")
}
在主视图中,因为ajax请求只返回部分而没有布局,所以mvc不知道应该在哪里呈现这个脚本部分。在这个ajax请求中,
@RenderSection(“scripts”,required:false)
永远不会被计算。如果你在局部视图中使用@section脚本
,它可能会起作用,但是在ajax响应中包含js不是一个好方法,所以如果你不需要的话就不要这样做。根据上面的详细信息,在布局页面中除了_Head@Html.partial(“u Head”)之外,我没有找到任何局部视图。我没有找到任何使用“\u UserList”部分视图的视图。可能的副本没有我想要的那么优雅,但我想它可以完成这项工作。ThanksCorrect,省略@section脚本,它将以部分形式具体化脚本位置