2013-07-11 62 views
14

我有以下功能,我希望可以在我的asp.net網頁2應用程序中使用幾個.cshtml視圖。我怎樣才能使這個功能可用於應用程序中的任何視圖(而不僅僅是一個)。在幾個網頁(.cshtml文件)中使用Razor @functions

@functions { 

    public bool DisplayButton(String startDate, String endDate) 
    { 
     return Convert.ToDateTime(startDate) < DateTime.Now && Convert.ToDateTime(endDate) > DateTime.Now; 
    } 
} 
+0

可能重複,http://stackoverflow.com/questions/6347447/shared-mvc-razor-functions-in-several-views – Phas1c

+2

我不想使用幫手。 – Robert

回答

20

創建一個名爲Functions.cshtml在App_Code文件,然後文件將您擁有的代碼粘貼到文件中。然後,你可以通過文件名前綴它調用任何.cshtml文件DisplayButton方法:

var myBool = Functions.DisplayButton(DateTime.Now, DateTime.Now.AddDays(30)); 

更多關於在ASP.NET網頁功能和幫手,閱讀本:http://www.mikesdotnetting.com/Article/173/[email protected]@Functions-In-WebMatrix

+0

這正是我所需要的。謝謝。 – Robert

+0

它現在還在工作嗎? –

+0

我有這個錯誤消息。 CS0120:非靜態字段,方法或屬性'Functions.AgoDateString()' –

2

您可以在此描述定義在AppCode目錄剃刀文件「全球性」的輔助功能:http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx。但是,助手只呈現頁面元素;他們無法返回值(或更正確地說,返回的值是要呈現的HTML標記)。

如果你需要返回一個值,你最好的選擇是擴展方法。

+3

函數關鍵字用於定義返回由方法簽名定義的值的函數(方法)。 helper關鍵字定義了一個呈現HTML的Razor模板。 –

1

不明白爲什麼你不能有一個靜態類的靜態方法,只是包括它在每個視圖頂部,然後用它

+0

,因爲每次修改類時都需要編譯 – MatteoSp

相關問題