Asp.Net MVC 3 Custom WebViewPage в разных пространствах имен разрывает IntelliSense - PullRequest
9 голосов
/ 15 марта 2011

У меня есть пользовательский класс, который расширяет WebViewPage, который я использую в качестве основы для всех моих представлений Razor, используя метод, описанный здесь: http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx. Все работает нормально, если я не перемещаю его в пространство имен, которое отличается от пространства именсами представления, после чего IntelliSense перестает работать (да, я включил пространство имен пользовательского WebViewPage в раздел пространств имен в разделе system.web.webPages.razor файла web.config в папке представлений).Это можно обойти?

В конечном итоге я хочу переместить все представления в другой проект, к которому у графических дизайнеров есть доступ, но я не хочу настраивать класс WebViewPage в этом проекте.Это возможно, не нарушая IntelliSense?

Ответы [ 2 ]

12 голосов
/ 02 мая 2011

Это будет звучать глупо, но пересоберите и перезапустите Visual Studio несколько раз: -D

Я только что воспроизвел проблему и перепробовал все, чтобы она работала (включая изменение pageBaseType в дополнение к одному). Я перезапустил VS, и он начал работать. Удалена деталь, и она все еще работает после нескольких циклов очистки / восстановления / перезапуска.

Мои представления / Web.config имеет это:

<system.web.webPages.razor>
    <pages pageBaseType="ClassLibrary1.MyBasePage">
</system.web.webPages.razor>

В моем веб-проекте есть ссылка на проект ClassLibrary1.

Мой пользовательский класс (в ClassLibrary1) выглядит следующим образом:

namespace ClassLibrary1
{
    public abstract class MyBasePage<T> : WebViewPage<T>
    {
        public string DannyName { get; set; }

        public MyBasePage()
        {
            this.DannyName = "Danny Tuppeny";
        }
    }
}

И когда в веб-проектах Views / Home / Index.cshtml я получаю intellisense для "@DannyName" при вводе "@D".

Некоторые вещи, которые я пробовал, могли иметь эффект, но он все еще работает после того, как я удалил его:

  • Добавлен pageBaseType в Views / web.config в разделе
  • Добавлена ​​неуниверсальная версия класса:
    • открытый абстрактный класс MyBasePage: MyBasePage {}
2 голосов
/ 05 мая 2012

Я обнаружил, что достаточно перезапустить ваш веб-сервер Cassini / IIS Express / IIS.

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