MVC3 UrlHelperExtensions с представлениями Razor (из .ASPX)

Я просмотрел все, что смог найти в Razor Views, но ничего не нашел о том, как преобразовать использование UrlHelper в Razor из WebForms.

Пример кода .ASPX:

<img src="<%= Url.AccountPicture(Model.Picture, "bigger") %>" alt="<%= Html.AttributeEncode(Model.FullName) %>" width="73" height="73" />

Как я преобразовал его в RAZOR:

<img src="@Url.AccountPicture(Model.Picture, "bigger")" alt="@Html.AttributeEncode(Model.FullName)" width="73" height="73" />

Прилагаемый файл UrlHelperExtensions.cs:

namespace ShadowVenue.Extensions
    {
        public static class UrlHelperExtensions
        {
            public static string AccountPicture(this UrlHelper helper, string name, string size)
            {
                if (string.IsNullOrEmpty(name))
                    name = "default";

                return helper.Content(string.Format("~/content/images/pictures/{0}_{1}.png", name, size));
            }
        }
    }

Ошибка, которую Visual Studio выделяет |@Url.AccountPicture| с:

«System.Web.Mvc.UrlHelper» не содержит определения для «AccountPicture», и не удалось найти метод расширения «AccountPicture», принимающий первый аргумент типа «System.Web.Mvc.Helper» (вы пропустили директива using или ссылка на сборку?)

Эта ошибка возникает во время выполнения:

«System.Web.Mvc.UrlHelper» не содержит определения для «AccountPicture», и не удалось найти метод расширения «AccountPicture», принимающий первый аргумент типа «System.Web.Mvc.UrlHelper» (вы пропустили? директива using или ссылка на сборку?)

У меня есть пространство имен ShadowVenue.Extensions, зарегистрированное в файле web.config.

Пожалуйста, помогите, спасибо!


person Timothy Green    schedule 11.02.2011    source источник
comment
Кто-нибудь знает ответ на этот вопрос? [ссылка]stackoverflow.com/questions/4975354/   -  person Timothy Green    schedule 12.02.2011
comment
Вы должны принять ответ, щелкнув пустую галочку.   -  person SLaks    schedule 13.02.2011


Ответы (2)


Вам нужно включить пространство имен ShadowVenue.Extensions в тег <system.web.webPages.razor> (а не в тег <pages>).

person SLaks    schedule 11.02.2011

В дополнение к ответу SLaks вы можете поместить тег @using ShadowVenue.Extensions в верхней части вашего представления бритвы для одноразовой ссылки.

person Eric King    schedule 11.02.2011
comment
Я пошел дальше и использовал этот метод, и он отлично сработал, большое спасибо! - person Timothy Green; 12.02.2011