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