拡張メソッドを正しく呼び出していません。そのはず:
@Url.MRUrl()
拡張メソッドを使用する前に、C# での拡張メソッドのしくみについてお読みください: http://msdn.microsoft.com/en-us/library/bb383977.aspx
拡張メソッドは、指定された型 (あなたの場合) を拡張し、この型のインスタンスUrlHelper
で呼び出されます。したがって、ビュー内には既に(プロパティ全体で) のインスタンスがあるため、拡張メソッドを直接呼び出すことができます。UrlHelper
Url
拡張メソッドを呼び出す前に、それを含むクラスが定義されている名前空間を追加して、それをスコープに入れる必要があります。
@using MyNS.Helpers
@Url.MRUrl()
また、拡張メソッドは静的クラス内で宣言する必要があります。あなたの C# コードはコンパイルさえしません。だからそれを修正してください:
namespace MyNS.Helpers
{
public static class HtmlHelper // Bad name choice I know.
{
public static string MRUrl(this UrlHelper url)
{
return "blah";
}
}
}
これらはすべて標準の C# であり、ASP.NET MVC や Razor とは関係ありません。
ここで、ASP.NET MVC 固有のもの: 名前空間を各ビュー ( ) のスコープに入れる必要がないようにしたい場合は、それをファイルのタグに@using MyNS.Helpers
追加できます ( と混同しないでください)。<namespaces>
~/Views/web.config
~/web.config