Вы не вызывая расширение метод правильно. Оно должно быть:
@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
).
Отличный ответ. Такие люди, как вы, окружают мир :) – Doomsknight
@ Darin, вы рок-звезда в stackoverflow. Спасибо за вашу отличную поддержку! –