我刚刚开始使用.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;?
答案 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 ...
}