awr*_*ley 10 razor asp.net-mvc-3
给定这个嵌套的布局结构:
~/Views/Shared/_layoutBase.cshtml ~/Views/Shared/_layout.cshtml
_layoutBase.cshtml布局在哪里_layout.cshtml.
布局文件中定义的任何部分都会在其下的页面中呈现其内容 ~/Views/...
但是,对于区域中的视图,从不渲染这些部分.
_layoutBase:
<script type="text/javascript">
@RenderSection("footerScripts", false)
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
_layout.cshtml:
@section footerScripts{
@RenderSection("footerScripts", false)
}
Run Code Online (Sandbox Code Playgroud)
"内容"观点:
@section footerScripts{
$(function () {
SetFocusOnForm("CaptchaCode", "NextButton");
});
}
Run Code Online (Sandbox Code Playgroud)
段的内容footerScripts永远不会在区域的视图中呈现.它确实在~/Views文件夹下的视图中呈现.
面积_ViewStart.cshtml:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)
你能看到什么问题吗?!
Dar*_*rov 26
我无法重现这个问题.这是我的设置和我做的步骤.
添加~/Views/Shared/_LayoutBase.cshtml:
<!DOCTYPE html>
<html>
<body>
@RenderBody()
<script type="text/javascript">
@RenderSection("footerScripts", false)
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)用以下内容替换内容~/Views/Shared/_Layout.cshtml:
@{
Layout = "~/Views/Shared/_LayoutBase.cshtml";
}
@section footerScripts{
@RenderSection("footerScripts", false)
}
@RenderBody()
Run Code Online (Sandbox Code Playgroud)右键单击项目并添加管理区域
将TestController添加到此管理区域并添加相应的~/Areas/Admin/Views/Test/Index.cshtml视图:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
@section footerScripts{
alert('ok');
}
Run Code Online (Sandbox Code Playgroud)/admin/test/index我今天早上起床,立即看到了问题:
我在部分视图中有@section块.在MVC 3中,那将无法工作!
哎呀!
我非常感谢Darin的努力,这有效地提供了证据表明部分在区域中按预期工作.但真正的原因是这个.
我忘了他们在Partial View中,因为我有一个mvc 3向导,它使用部分视图来执行步骤.它运行良好且一致,如果javascript可用,则使用ajax,您忘记了自己在做什么.
请给达林投票,但这才是真正的答案.