.cshtml Razor代码模板(.NET)

时间:2017-10-16 09:36:48

标签: c# asp.net .net razor asp.net-core

我刚刚开始使用.NET,而且我对剃刀代码不是很熟悉。 我想删除剃刀(.Net)代码中的冗余,没有大问题。我有大约十几个带​​有剃刀代码的PDF生成.cshtml文件,而且数量正在增长。每个文件几乎相同。整个结构总是一样的,只有内容总是不同的。因为文件非常大,我将做一个抽象的例子(忽略元素的真正含义,例如列表可能是不同的div):

文件1:

<div>
  <p>
    @content
  </p>
</div>
<ul>
  <li>
    <a>
     @comment
    </a>
  </li>
</ul>

文件2:

<div>
  <p>
    @picture
  </p>
</div>
<ul>
  <li>
    <a>
      <div>
        @link
        @metadata
      </div>
    </a>
  </li>
</ul>

我认为使用@helper或@function对于相同的不同部分并不是很干净。在其中使用10多个函数读取代码将不是很清楚,仅适用于那里的结构。 我不能只是创建一个函数来插入值,因为有时在主结构中有一个链接或一个额外的div元素。

最后,我希望有一个地方可以更改基本结构,更改所有结构,而无需经过10个以上的文件并逐个更改。

是否可以制作这样的&#34;模板&#34;?

1 个答案:

答案 0 :(得分:1)

您可以使用定义整体结构的布局页面。 &#34; Content&#34;,&#34; Comment&#34;等被定义为布局中的部分,这些部分从使用布局的cshtml文件中获取其内容。 Creating a Consistent Layout in ASP.NET Web Pages (Razor) Sites

_Layout.cshtml

<div>
  <p>
    @if (IsSectionDefined("content")) {
        @RenderSection("content", false)
    }
  </p>
</div>
<ul>
  <li>
    <a>
      @if (IsSectionDefined("comment")) {
          @RenderSection("comment", false)
      }
    </a>
  </li>
</ul>
使用此布局的

.cshtml

@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
@section content {
    <div>My content</div>
}
@section comment {
    bla bla bla ...
}