複数のビューで使用する必要があるヘルパー メソッドがあります。次の情報を使用しようとしました: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx。このヘルパー メソッドを /App_Code/Helpers.cshtml で定義しました。私のビューは次の場所にあります
/resources/_Layout.cshtml
/Views/Index.cshtml
/Views/Home/Index.cshtml
_Layout.cshtml でヘルパー関数を参照すると、すべて正常に動作します。ただし、ヘルパー関数を他のビューで参照すると、ランタイム エラーが発生します。実行時エラーは次のように述べています。
CS0103: 'MyFunction' という名前は現在のコンテキストに存在しません
私のヘルパーメソッドは次のようになります。
/App_Code/Helpers.cshtml
------------------------
@helper MakeUrlRelative(string url)
{
@MyNamespace.MyClass.MakeUrlRelative(HttpContext.Current.Request, url)
}
/Views/Index.cshtml で参照するときは、次のように使用します。
<link rel="stylesheet" href="@MakeUrlRelative("/resources/css/app.css")" />
/Views/Home/Index.cshtml で参照すると
<a href="@MakeUrlRelative("/home/page2")">click me</a>
ご覧のとおり、同じ方法で MakeUrlRelative メソッドを参照しています。/Views/Home/Index.cshtml から Helpers.cshtml ファイルにアクセスできないようです。これは何が原因でしょうか?