web-dev-qa-db-ja.com

いくつかのWebページ(.cshtmlファイル)でRazor @ functionsを使用する

Asp.netWebページ2アプリケーションのいくつかの.cshtmlビューで使用できるようにしたい以下の関数があります。この関数を(1つだけではなく)アプリケーションの任意のビューで使用できるようにするにはどうすればよいですか。

@functions {

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

App_CodeにFunctions.cshtmlというファイルを作成し、使用しているコードをファイルに貼り付けます。次に、ファイル名を前に付けることで、任意の.cshtmlファイルのDisplayButtonメソッドを呼び出すことができます。

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

ASP.NET Webページでの関数とヘルパーの操作の詳細については、次をお読みください: http://www.mikesdotnetting.com/Article/173/The-Difference-Between-@Helpers-and-@Functions- In-WebMatrix

23
Mike Brind

ここで説明するように、AppCodeディレクトリのRazorファイルで「グローバル」ヘルパー関数を定義できます。 http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc- 3-and-the-helper-syntax-within-razor.aspx 。ただし、ヘルパーはページ要素のみをレンダリングします。値を返すことはできません(より正確には、戻り値はレンダリングされるHTMLマークアップです)。

値を返す必要がある場合、最善の策は拡張メソッドです。

2
Peter Gluck

静的メソッドを持つ静的クラスを作成できなかった理由がわからないので、すべてのビューの上部に含めてから使用してください

1
krilovich