从一个局部视图填充Razor部分

111

我尝试这样做的主要动机是将仅在页面底部的部分所需的JavaScript与其余JavaScript放在一起,而不是在呈现该部分的页面中间。

以下是我所尝试做的简化示例:

这里是一个布局,其中在body之前有一个Scripts节。

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />    
</head>

<body>
    @RenderBody()
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    @RenderSection("Scripts", false)
</body>
</html>

以下是使用这个布局的示例视图。

<h2>This is the view</h2>

@{Html.RenderPartial("_Partial");}

@section Scripts {
<script type="text/javascript">
        alert("I'm a view.");
</script>
}

这里是从视图中呈现的部分。

<p>This is the partial.</p>

@* this never makes it into the rendered page *@
@section Scripts {
<script type="text/javascript">
    alert("I'm a partial."); 
</script>
}
在这个例子中,在视图中指定的标记被放置在部分中,但来自部分的标记没有。是否有可能使用Razor从部分视图填充部分?如果不能,有什么其他方法可以在页面底部只包含部分所需的JavaScript而不是全局包含它?

也许是因为你在部分代码中有另一个脚本部分,所以出现了问题。我不确定。你的代码有点混乱。 - gideon
1
不是这样的。即使该部分在视图中被省略,偏见中的代码也不会出现在最终呈现的页面中。我认为SLaks是正确的,部分无法参与父视图的部分。 - Craig M
12个回答

0

0

这个功能也实现在ClientDependency.Core.Mvc.dll中。它提供了html助手:@Html.RequiresJs和@Html.RenderJsHere()。Nuget软件包:ClientDependency-Mvc


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接