我对 mvc razor 中   @RenderSection 理解

我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section。



例如:

<html lang="zh">

   <head>


    @RenderSection("header");

   </head>

模板页中,声明Section header


那么在别的引用页比如


@{

   ViewBag.Title = "index_test";

   Layout = "~/Views/Shared/_Layout2.cshtml";

}


@section header

{


   <p> section  ;<p>


   }


<h2>index_test</h2>



就可以,如果  没有实现母版页的section那么


系统会抛出  异常

“/”应用程序中的服务器错误。

节未定义:“header”。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。            

异常详细信息: System.Web.HttpException: 节未定义:“header”。

源错误:

行 7:          <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
行 8:          <meta name="viewport" content="width=device-width" />
行 9:       @RenderSection("header");行 10:     </head>
行 11:     <body>


解决方法:

1.@RenderSection("header",false);,第二个参数代表它不是必须的,就不会抛出异

2.在第一种上优化  给出一个默认值

@if (IsSectionDefined("header"))
       {
           @RenderSection(
"header", false)
       }
else
       {
<p>这是个默认</p>
       }

你可能感兴趣的:(mvc)