Asp.net @嵌套razor模板中的渲染
我的问题是,当基本模板中定义了Asp.net @嵌套razor模板中的渲染,asp.net,asp.net-mvc,asp.net-mvc-3,razor,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,我的问题是,当基本模板中定义了@RenderSection时,我似乎无法从嵌套模板中使用@RenderSection。目前,我有一个嵌套的基本模板,它链接到一个子模板,然后在视图页面中使用。当我在基本模板中定义@RenderSection并在视图页面中呈现它时,它会抛出一个错误 这就是确切的问题 我想创建一个RenderSection以允许插入自定义脚本。 我的基本模板 <!DOCTYPE html> <html> <head> <title>@V
@RenderSection
时,我似乎无法从嵌套模板中使用@RenderSection
。目前,我有一个嵌套的基本模板,它链接到一个子模板,然后在视图页面中使用。当我在基本模板中定义@RenderSection
并在视图页面中呈现它时,它会抛出一个错误
这就是确切的问题
我想创建一个RenderSection以允许插入自定义脚本。
我的基本模板
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false) // The region of the header scripts (custom css)
</head>
<body>
@RenderBody()
</body>
</html>
我的新基础模板
<head>
<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/layout.css")" />
<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/global.css")" />
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/js/fadeInFadeOut.js")"></script>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false)
</head>
<body>
@RenderBody()
</body>
我的看法
@{
ViewBag.Title = "Home";
Layout = "~/Views/Shared/OneColLayer.cshtml";
}
@section HeaderContent {
<h1>Left Content</h1>
}
<div>my view content</div>
@{
ViewBag.Title=“主页”;
Layout=“~/Views/Shared/OneColLayer.cshtml”;
}
@章节标题内容{
左内容
}
我的视图内容
内容放在oneCol模板中,现在是基本模板
结果
<div id="Content">
<h1>Left Content</h1>
</div>
左内容
< /代码> 您需要指定在中间模板中允许通过的部分。
BaseTemplate.cshtml
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false) @* The region of the header scripts (custom css) *@
</head>
<body>
@RenderBody()
</body>
</html>
如果将“渲染”部分放置在基础模板中某个部分的内部,它将在基础模板上的正确位置渲染该部分
View.cshtml->使用MiddleLayout.cshtml作为其布局
@section HeaderContent
{
<!-- header content that will now render -->
}
<!-- page content -->
@章节标题内容
{
}
我尝试过这种方法。但是,在我看来,它的内容显示在它继承的不是基础模板的模板上。@ JamesAndrewSmith每编辑一次,它就显示在中间模板上,因为您没有将“<代码> @ RealStices < /代码>放在您呈现的部分的中间模板中。我会编辑我的,让你知道你的应该是什么样子。我希望有更好的方法来冒泡部分声明。除了@sectionscript{@RenderSection(“script”)}之外,还有一个问题:如何将RenderSection html字符串获取到cshtml页面@{string sampleHeading;}@if(IsSectionDefined(“sampleHeading”){sampleHeading=RenderSection(“sampleHeading”).ToString();@Html.Display(“sampleHeading”);这非常有效。谢谢!不过应该自动传递它。
<div id="Content">
<h1>Left Content</h1>
</div>
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false) @* The region of the header scripts (custom css) *@
</head>
<body>
@RenderBody()
</body>
</html>
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@section HeaderContent {
@RenderSection("HeaderContent", false)
}
@RenderBody()
@section HeaderContent
{
<!-- header content that will now render -->
}
<!-- page content -->