Бритва импортировала пространства имен - PullRequest
0 голосов
/ 04 августа 2011

У меня проблемы с моими расширениями класса UrlHelper, так как они не обнаруживаются.Пока что я сделал следующее:

1) Добавил пространства имен в раздел в файле web.config, который находится в папке Views.Я также добавил их в основной файл web.config, чтобы быть уверенным.

<system.web.webPages.razor>

2) Убедитесь, что ссылка System.Web.Mvc в файле csproj предназначена для MVC3,Я также убедился, что ссылки System.Web.WebPages и System.Web.Helpers включены.

3) Убедитесь, что csproj ProjectTypeGuids указаны правильно.

{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

4) Проверено, что bindingRedirect указывает на MVC3.

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Я что-то упустил, так как Google не выдвинул ничего другого?

Код выглядит следующим образом (снесущественные вещи удалены):

namespace MyNameSpace.Controllers.Extensions
{
    using System.Web.Mvc;
    using System.Web.Routing;

    using Contracts.Entities;
    using Controllers.Routing;

    public static class UrlHelperExtensions
    {
        public static string BrowseLink(this UrlHelper urlHelper, ICategory category)
        {
            var routeValueDictionary = new RouteValueDictionary
                {
                    { "categorypath", BrowsePath.Serialize(catagory) },
                    { "pagenumber", "1" }
                };

            return urlHelper.Action("Index", "Browse", routeValueDictionary);
        }
    }
}

1 Ответ

0 голосов
/ 04 августа 2011

В файле web.config в папке Views добавьте к этому:

    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="NAMESPACE OF YOUR EXTENSION CLASS" />
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
        </namespaces>
    </pages>

и выгрузите / перезагрузите проект.Если проблема не устраняется, просто используйте директиву @using поверх страницы cshtml или vbhtml и импортируйте класс Extension.Кстати, когда вы говорите «расширения для UrlHelper», я понимаю, что у вас просто есть статический класс с методами, которые имеют this UrlHelper helper в качестве 1-го аргумента.Если это так, сначала используйте директиву @using, чтобы увидеть, работает ли она в cshtml, а затем попробуйте добавить в web.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...