我有这样的设置:
布局_管理员
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Html.RenderCssHere()
@Html.RenderJsHere()
</head>
<body> ... </body>
然后是 Category.cshtml 上加载的第一个部分页面
@using ClientDependency.Core.Mvc
@{
ViewBag.Title = "Admin > Category";
Layout = "~/Views/Admin/_Layout_Admin.cshtml";
Html.RequiresJs("~/scripts/jsTree3/jstree.js");
Html.RequiresJs("~/scripts/jsTree3/jstreegrid.js");
Html.RequiresCss("~/content/jsTree/themes/default/style.css");
}
这些脚本可以毫无问题地完美呈现。现在 Category.cshtml 加载另一个名为 _CreateCategory.cshtml 的部分,它具有以下标题
@using ClientDependency.Core.Mvc
@model MyProject.Data.Models.Category
@{
ViewBag.Title = "Create";
Layout = null;
Html.RequiresJs("~/scripts/plupload/plupload.dev.js");
Html.RequiresJs("~/scripts/plupload/moxie.js");
}
最后一组客户端依赖项根本没有被呈现。_CreateCategory.cshtml 是通过在 js 中调用的控制器操作加载的。
$("#btn_addCategory").on("click", function(e) {
$("#categoryDetails").load("CreateCategoryView");
所以问题是如何获取在这个部分渲染中定义的脚本。如果我在 Category.cshtml 中包含这些脚本,它们会被渲染,但 _CreateCategory.cshtml 仍将它们显示为未定义。
我认为这是因为 js 正在调用控制器操作而不是剃须刀页面中的 @Html.Action。但这样做对我来说不是一个选择。
任何帮助表示赞赏。