加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在ASP.NET MVC中,使用@RenderSection(与@RenderP

发布时间:2020-12-16 10:00:48 所属栏目:asp.Net 来源:网络整理
导读:如果我做错了什么我想要开悟.我打赌我是. 如果我在视图页面中有以下代码: @{ ViewBag.Title = "About Us";}h2About/h2p sample content./p@section header{ div id="header" Chapter 3a: Creating a Consistent Look /div} …我还应该在我的布局页面中使用f
如果我做错了什么我想要开悟.我打赌我是.

如果我在视图页面中有以下代码:

@{
    ViewBag.Title = "About Us";
}

<h2>About</h2>
<p>
    sample content.
</p>
@section header
{
    <div id="header">
        Chapter 3a: Creating a Consistent Look
    </div>
}

…我还应该在我的布局页面中使用ff来呈现部分(如果可用)以防止在运行时发生异常:

@if (IsSectionDefined("header"))
{ 
    @RenderSection("header")
}

但是,如果我在渲染部分之前没有检查该部分的最后4行(比如说我全部注释了它们),编译器将不会检查我的视图页面中是否定义了部分,并允许我构建和运行应用程序.在运行期间,只有在运行页面时才会出现此错误:

The following sections have been defined but have not been rendered
for the layout page “~/Views/Shared/_Layout2.cshtml”: “header”.

我的问题是ff:

>我们如何防止这种情况发生?是否有任何设置强制编译器检查丢失的@RenderSection代码?
> @section功能的使用是否会使系统的可维护性降低(假设问题#1没有正面答案),因为我们需要在整个应用程序中手动搜索@section关键字的存在?
>在这种情况下,使用@RenderSection而不是@RenderPage有什么好处?
>我们还可以使@section有条件吗?

解决方法

我从未想过这是一个问题.这个概念与aspx语法中的占位符相同,因此如果您的主页中有2个占位符,那么您应该在每个页面/视图中使用该主页包含2个内容.

菲尔·哈克(Phil Haack)有一篇关于这个论点的博客文章,它没有直接解决你的问题,但肯定会有一些有趣的事情需要考虑.

http://haacked.com/archive/2011/03/05/defining-default-content-for-a-razor-layout-section.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读