2012-05-02 54 views
2

之前。我有一個Razor佈局頁面,用於我的Web應用程序。剃刀(網頁)佈局頁面執行我使用剃刀網頁(所以<em>不</em> MVC)RenderBody

我有一個代碼執行順序問題。通常,您在子頁面上設置Page.Title,然後在佈局頁面運行時填充此變量,以便您可以在佈局中的頁面上放置標題。沒關係。但我需要向後做。我想在子頁面上的代碼執行之前爲所有頁面運行一些代碼。

我希望能夠運行一個單件的代碼,我沒有在每一個子頁面引用,我需要它執行的子頁面運行任何代碼之前。我敢肯定有一個很淺顯的方式做到這一點,我失蹤我是新來的剃刀網頁生命週期...

例子: 我在佈局中設置我的網站名稱頁。但由於某種原因,我想在我的子頁面,子子頁面等一堆地方顯示網站名稱。我該如何做到最好?

我知道_PageStart.cshtml,我可以用它來運行通過文件夾的基礎上的文件夾之前別的代碼,建立Page.Whatever變量我可能需要等,這適用於我的目的。但是我很難理解這是否是正常的過程,或者這是否是一種錯誤的方法。關於Razor網頁的這方面,網上似乎沒有太多。

+0

我有同樣的問題。我想在我的頁面上設置一個變量。財產在我的佈局頁面,然後在我的子頁面訪問該變量... –

+0

嗨瑞克。正如我所說的,我只是在_PageStart.cshtml中做了一堆東西。如果您在網站的不同部分需要不同的頁面變量,則可以在文件夾結構中的不同級別放置_PageStart.cshtml。沒有人給我一個關於這是否是最佳實踐的答案(沒有人似乎對Razor網頁有太多瞭解)。 – Zac

+0

從我發現的情況來看,頁面將始終在佈局頁面之前運行。看起來_pageStart是預定的地方。 –

回答

0

Web用戶控件是你想要的。

+0

我認爲用戶控件(ascx)是特定於Web窗體的,我使用的是Razor Web頁面。我將如何消費它?這真的是解決方案嗎? – Zac

0

只需設置佈局:

@{ 
    Layout="~/Master.cshtml"; 
}