Почему Intellisense не работает при использовании блоков рендеринга в атрибуте HTML с двойными кавычками? - PullRequest
5 голосов
/ 06 августа 2009

Когда я пытаюсь написать код, подобный следующему исходному коду, Visual Studio не показывает Intellisense для текущего контекста. Более того, он говорит мне, что другие скобки "<%%>" неверны.

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

Как решить эту проблему с помощью патча или VSPackage (если у вас есть некоторый исходный код для изменения существующего Intellisense, я добавлю ваш исходный код в мой пакет VS)?

PS. Я использую Visual Studio 2008 SP1 с .NET 3.5 SP1

Ответы [ 3 ]

4 голосов
/ 13 августа 2009

Это просто недостаток компонента HTML-дизайнера Visual Studio. Если вы извлекаете блок кода за пределы атрибута, он прекрасно работает, после того, как вы поместите <%= %> в атрибут, он больше не даст вам надлежащего IntelliSense в этом блоке. У меня даже было это в атрибуте style="<%= %>", которое полностью потерялось и даже не получило правильный цвет синтаксиса (пытается разобрать его как CSS).

Моя теория состоит в том, что анализатор находится в контексте этого тега и атрибута, поэтому он пытается интерпретировать то, что вы делаете, как значения этого атрибута. Например, когда вы набираете открытую кавычку type=", она знает, чтобы показать вам список общих значений для этого тега. Если вы попытаетесь вызвать IntelliSense в середине type="<%= %>", он покажет вам тот же список значений, который не соответствует ожиданиям в этом контексте блока кода.

Я испытываю ту же самую проблему при использовании окраски синтаксиса Visual Studio для редактирования JBST клиентских шаблонов . Разметка идентична, но окраска синтаксиса очень часто случается.

Могу поспорить, что для этого нет исправления, так как это довольно суть для дизайнера. Лучше всего подождать выхода в будущем. Я не пробовал это в Visual Studio 2010, чтобы посмотреть, исправили ли они.

0 голосов
/ 27 августа 2009

Я только что установил Visual Studio 2010 Beta 1, и в этой версии он тоже не работает. Я действительно надеюсь, что они исправят это до финального релиза.

0 голосов
/ 11 августа 2009

Я думаю, что для обработки этого в ASP.NET нужен намек.

Попробуйте использовать

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

В качестве альтернативы, вы можете сделать это в .NET с помощью (возможно, потребуется <% @ Register%> вверху):

<asp:Panel runat="server">
   <asp:CheckBox runat="server" ToolTip="<%= LogOnView.RememberMe_ToolTip %>"/>
</asp:Panel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...