2017-10-16 109 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 ... 
}