C# 如何在主布局文件中渲染局部视图部分

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:

我正在使用asp.NETMVC5

我有一个_布局文件,如下所示:

    <!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脚本,它将以部分形式具体化脚本位置