2009-08-06 15 views
5

Kiedy próbuję napisać kod taki jak poniższy kod źródłowy, Visual Studio nie wyświetla żadnego IntelliSense dla bieżącego kontekstu. Co więcej, mówi mi, że kolejne nawiasy "<%%>" są niepoprawne.Dlaczego Intellisense nie działa, gdy używa bloków renderowania na adibucie HTML z podwójnym cudzysłowem?

<div> 
    <input type="checkbox" title="<%= LogOnView.RememberMe_ToolTip %>" /> 
</div> 

Jak rozwiązać ten problem przez łaty lub VSPackage (jeśli masz jakiś kod źródłowy dla modyfikacji istniejącego Intellisense dodam swój kod źródłowy do mojego VS pakietów)?

PS. Używam Visual Studio 2008 SP1 z .NET 3.5 SP1

+2

Jest to domyślne zachowanie programu Visual Studio. –

+0

Masz na myśli, że nie mogę używać IntelliSense w tej lokalizacji. Myślę, że to błąd Visual Studio 2008. Ponieważ moja strona wciąż działa. –

+0

Myślę, że to nie błąd, ale domyślne zachowanie. –

Odpowiedz

4

To tylko niedociągnięcie w komponencie projektanta HTML programu Visual Studio. Jeśli wyciągniesz blok kodu poza atrybutem, działa on świetnie, po umieszczeniu w atrybucie <%= %> nie zapewnia on już odpowiedniego IntelliSense w tym bloku. Miałem nawet to w atrybucie style="<%= %>" kompletnie bezmyślne i nie otrzymam nawet poprawnego koloru składni (próbuje go parsować jako CSS).

Moja teoria jest taka, że ​​analizator składni znajduje się w kontekście tego znacznika i atrybutu, dlatego próbuje interpretować, co robisz jako wartości tego atrybutu. Na przykład, po wpisaniu otwartego cytatu z type=" będzie on wyświetlał listę wspólnych wartości dla tego znacznika. Jeśli spróbujesz wywołać funkcję IntelliSense w środku type="<%= %>", wyświetli ona tę samą listę wartości, która nie jest tym, czego można się spodziewać w kontekście tego bloku kodu.

Ten sam dokładny problem występuje podczas korzystania z kolorowania składni Visual Studio do edycji JBST client-side templates. Znaczniki są identyczne, ale kolorowanie składni co jakiś czas się wkurza.

Założę się, że nie ma na to poprawki, ponieważ jest to dość istotne dla projektanta. Najlepiej jest czekać na przyszłe wydanie. Nie próbowałem tego w Visual Studio 2010, aby sprawdzić, czy go naprawili.

+0

Dla ciebie odpowiedź, chcę wiedzieć tylko 1 pytanie. Czy to możliwe, aby rozwiązać ten problem, modyfikując intellisense w Visual Studio HTML projektanta z Visual Studio Integration Package. Jest to bardzo ważne dla kodowania z Asp.net MVC. Dzięki. –

+0

Niestety nie sądzę. Kiedy Microsoft zaktualizował Intellisense, aby lepiej pracować z pewnymi bibliotekami JavaScript (np. JQuery), wypuścili go jako poprawkę VS, która łatała samą VS. Nie sądzę, aby obecna wersja Visual Studio była wystarczająco łatwa do obsłużenia, by zastąpić zachowanie IntelliSense, ale z tego, co rozumiem, może być rzeczywistością w przyszłej wersji. – mckamey

-2

Myślę, że potrzebuje podpowiedzi do przetwarzania w ASP.NET.

Spróbuj użyć

<div runat="server"> 
    <input type="checkbox" title="<%= LogOnView.RememberMe_ToolTip %>" runat="server"/> 
</div> 

Alternatywnie, można to zrobić w .NET z (może potrzebować <% @ register%> na górze choć):

<asp:Panel runat="server"> 
    <asp:CheckBox runat="server" ToolTip="<%= LogOnView.RememberMe_ToolTip %>"/> 
</asp:Panel> 
+0

To jest po prostu źle. Żadna z tych sugestii nie będzie nawet wykonywała bloku kodu, ponieważ nie można używać '<%= %>' wewnątrz znaczników serwera, tylko w tekście dosłownym. To będzie kończyło się na "<% = LogOnView.RememberMe_ToolTip%>" "jako wskazówka. – mckamey

+0

Przy okazji, najprostszym sposobem rozwiązania tego problemu jest napisanie wszystkich tagów w Asp.net Server Control i ustawienie wszystkich właściwości w kodzie z tyłu. Ale to nie jest styl kodowania Asp.net MVC. –

0

Właśnie zainstalowałem Visual Studio 2010 Beta 1 i nie działa również w tej wersji. Naprawdę mam nadzieję, że naprawią to przed ostateczną wersją.

+0

Teraz, używając VS2013, nadal mam ten problem :( –

Powiązane problemy