Как я могу заставить ReSharper правильно найти раздел MVC3 в альтернативном макете? - PullRequest
1 голос
/ 04 января 2012

R # неправильно сообщает одно из моих представлений MVC3 как об ошибке. У меня есть 2 макета, каждый с определенными разделами:

@{
    Layout = "~/Views/Shared/layout2.cshtml";
}
@section Layout2Section { @* Layout2Section is red, reported as error by R#. *@
    <span>Injected into LayoutSection2</span>
}

Вид отображается нормально в браузере. Вот код из layout2:

@RenderSection("Layout2Section", false)
@if (!IsSectionDefined("Layout2Section"))
{
    <span>default layout2 section</span>
}

В ~/Views/Shared есть другое представление макета с именем _Layout.cshtml, по умолчанию в проекте MVC3. R # дает только intellisense для разделов в _Layout.cshtml, а не layout2.cshtml. Я пробовал префикс с подчеркиванием, он не работает. Если я пытаюсь определить какой-либо раздел в layout2.cshtml, который не определен в _Layout.cshtml, R # называет это ошибкой. Как отключить это, либо сказать R #, что представление является определителем раздела, либо избавиться от сообщения «1 файл с ошибками»?

Обновление

После комментария Деригеля я понял, что приведенный выше код не совсем то, что я имею в своем проекте. В частности, строка, которая определяет макет, использует T4MVC следующим образом:

@{
    Layout = MVC.Shared.Views.layout;
}

Если я заменю ее на строку, как в исходном вопросе, ошибка R # исчезнет. @Derigel, я все еще буду создавать тестовый проект и публиковать на вашем трекере? Я только что воспроизвел вышеупомянутое обновление в совершенно новом проекте MVC3 после добавления библиотеки T4MVC.

1 Ответ

2 голосов
/ 10 января 2012

@ olivehour О, теперь я понял.Это известное ограничение R # - он может определять макеты только в константах строковых литералов.Можете ли вы изменить шаблоны T4 для генерации констант вместо полей только для чтения?

...