Учитывая следующий метод расширения строки
namespace JHS.ExtensionMethods
{
public static class StringExtensions
{
public static string ToUSAPhone(this String str)
{
return String.Format("{0:(###) ###-####}", Double.Parse(str));
}
}
}
В представлении MVC4 Razor добавлен оператор @using
@using JHS.ExtensionMethods;
и следующее строковое значение вызывает метод расширения
@Model.producer.phone.ToUSAPhone()
что приводит к следующей ошибке
'string' does not contain a definition for 'ToUSAPhone'
Я также попытался поместить пространство имен в файл web.config из папки /Views и получить ту же ошибку.
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="JHS.ExtensionMethods"/>
</namespaces>
</pages>
Я проверил, что метод расширения работает, помещая тот же вызов в класс С#
string test=producer.phone.ToUSAPhone();
Кажется, ссылка на метод расширения недоступна в представлении Razor MVC4, но я не могу понять, почему?