Pytanie Resharper nie może rozwiązać częściowego widoku na stronie wzorcowej


Uaktualniłem z ReSharper 7 na vs2012 pro do ReSharper 8.1 na vs2013 pro, a ReSharper ostrzega mnie, że wielu moich częściowych widoków nie da się rozwiązać. Wygląda na to, że dzieje się to tylko:

  • Na stronach wzorcowych ASP (np. Nie brzytwa)
  • Kiedy część .ascx znajduje się w tym samym folderze kontrolnym, co częściowa

Na przykład. Home.Master, znajduje się w ~ / Views / Home / Home.Master renderuje UserProfile.ascx, znajduje się w ~ / Views / Home / UserProfile.ascx. Obie <%: Html.RenderPartial("UserProfile") %> i <%: Html.RenderPartial("~/Views/Home/UserProfile.ascx"%> są oznaczane przez ReSharper jako nieprawidłowe.

Co więcej, współdzielone części w folderze ~ / views / shared wydają się być dobrze odbierane, gdy odwołuję się po imieniu:

RenderPartial by view name working correctly

Jednak odwoływanie się do widoku według ścieżki nie wydaje się działać:

enter image description here

(Uwaga: oba obrazy są robione w Home.Master, w ~ / Widoki / Home)

Po uruchomieniu aplikacji części działają poprawnie, więc wydaje się, że jest to zmiana w ReSharper 8.1. Czy jest coś, co mogę zrobić, żeby to naprawić?


11
2018-02-04 21:45


pochodzenie


To wygląda na dobre pytanie dla zespołu Resharper, a nie StackOverflow. - Brad Christie
Szczególnie przydatne są tematy związane z przepełnieniem stosu, w szczególności pytania dotyczące "narzędzi powszechnie używanych przez programistów". Chociaż myślę, że to błąd w ReSharper, mam nadzieję, że jest to coś, co robię źle - stąd pytanie o przepełnienie stosu - berkeleybross
Mam podobny problem, ale dla mnie jest to tylko na stronach Razor. Co więcej niepokojące jest to, że na forach JetBrain nie ma nic podobnego. Jeśli znajdę rozwiązanie, opublikuję tutaj. - BJury
Jest łatwy do odtworzenia w projekcie o szkielecie kości, więc zgłosiłem go jako błąd do JetBrains. - BJury


Odpowiedzi:


To błąd w ReSharper.

Najlepszym rozwiązaniem jest ustawienie go tak, aby ignorował ten typ błędu.

Możesz to zrobić, wybierając "opcje kontroli" z "czerwonej żarówki" po lewej stronie i ustawiając ją na inną opcję. Mam nadzieję, że wkrótce zostanie naprawiony!

Edycja: zobacz ten bilet, aby rozwiązać problem. http://youtrack.jetbrains.com/issue/RSRP-395642


6
2018-02-13 15:42



Po 5 latach wygląda na to, że zostanie naprawiony w następnej wersji! (2018,2) - BJury


Jest prostsza poprawka, którą mam wokół, używając względnych odniesień. Tak więc w moim przypadku miałem widok w innym projekcie (i jeśli spróbujesz wyjść poza bieżący projekt bez zaczynania z ukośnikiem "/", otrzymasz ostrzeżenie takie jak to. Dla twojego problemu zmień wiersz, który czyta

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

do

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

lub

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

Nie jestem pewien, czy jest to dokładna ścieżka w twoim rozwiązaniu, ale mam nadzieję, że rozumiesz, co mówię - nie możesz użyć symbolu tyldy (~). Musisz użyć symbolu nawigacji HTML. Nie idealny oczywiście, ale śmiem twierdzić, że to lepsze niż zmiana zasad inspekcji.

Ponadto - jeśli chcesz usunąć inspekcję, po prostu skomentuj ją, dodając linię

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

lub

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

3
2017-11-25 09:25



ale w ten sposób będziesz mieć wiele bólu głowy, jeśli kiedykolwiek zdecydujesz się przenieść rzeczy, ponieważ twoja konfiguracja ścieżki nie jest w jednym miejscu, ale rozproszona po wszystkich (częściowych) widokach - Mladen B.