2017-10-16 89 views
0

我刚开始用,NET工作,我不是很熟悉的剃刀代码。 我想在我的剃须刀(.NET)代码中删除冗余,没有一个大混乱。我有大约十几个PDF格式的生成带有剃须刀代码的.cshtml文件,并且数量在不断增长。每个文件几乎相同。整个结构总是相同的,只有内容总是不同的。由于该文件是相当大的,我会做一个抽象的例子(忽略元素的真正意义,这个名单可以是例如不同的格):.cshtml剃刀代码模板(.NET)

文件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+文件去和一个改变他们一个结束。

是否有可能作出这样的“模板”?

+1

你有没有试着用'DisplayTemplates'和'EditorTemplates'文件夹_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共享?使用'UIHint'装饰器 – GGO

回答

1

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

使用此布局

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