Resharper не может разрешить частичное представление внутри главной страницы

Я обновил с ReSharper 7 на vs2012 pro до ReSharper 8.1 на vs2013 pro, и ReSharper теперь предупреждает меня, что многие мои частичные представления не могут быть решены. Кажется, это происходит только:

  • На главных страницах ASP (т.е. не бритве)
  • Когда частичный .ascx находится в той же папке контроллера, что и частичный

например. Home.Master, расположенный в ~/Views/Home/Home.Master, отображает UserProfile.ascx, расположенный в ~/Views/Home/UserProfile.ascx. Оба параметра <%: Html.RenderPartial("UserProfile") %> и <%: Html.RenderPartial("~/Views/Home/UserProfile.ascx"%> помечены как ReSharper как недопустимые.

Кроме того, общие частичные файлы в папке ~/views/shared кажутся хорошими, если я ссылаюсь только по имени:

RenderPartial by view name working correctly

Однако ссылка на представление по пути не работает:

enter image description here

(NB. Оба изображения берутся внутри Home.Master, в ~/Views/Home)

Когда я запускаю приложение, частичные файлы работают правильно, поэтому, похоже, это изменение в ReSharper 8.1. Есть ли что-нибудь, что я могу сделать, чтобы исправить это?

Ответ 1

Это ошибка в ReSharper.

Самое лучшее, на что стоит обратить внимание, это заставить игнорировать этот тип ошибок.

Вы можете сделать это, выбрав "параметры проверки" на "красной лампочке" с левой стороны и установив ее в другую опцию. Надеюсь, скоро это будет исправлено!

Изменить: см. этот билет для проблемы. http://youtrack.jetbrains.com/issue/RSRP-395642

Ответ 2

Там более простое исправление, которое я использовал, используя относительные ссылки. Так что в моем случае у меня был вид в другом проекте (и если вы попытаетесь выйти за пределы текущего проекта, не начиная с косой черты "/", вы получите предупреждение, подобное this. Для вашей проблемы измените строку, которая читает

<%Html.RenderPartial("UserProfile")%>

к

<%Html.RenderPartial("../../Views/Home/UserProfile")%>

или

<%Html.Partial("../../Views/Home/UserProfile.cshtml")%>

Не уверен, что это точный путь в вашем решении, но, надеюсь, вы понимаете, что я говорю - вы не можете использовать символ тильды (~). Вы должны использовать символ навигации HTML. Не идеально, но я смею сказать, что это лучше, чем изменение правил проверки.

Также - если вам нужно удалить проверку, просто прокомментируйте ее, добавив строку

// ReSharper disable once Mvc.PartialViewNotResolved
... // code goes here

или

// ReSharper disable Mvc.PartialViewNotResolved
... // code goes here 
// ReSharper restore once Mvc.PartialViewNotResolved