2016-05-17 3 views
0

я получаю следующее исключение, когда я нажимаю на следующей ссылке:Uncaught ReferenceError: XXX не определен с определенным значением

Uncaught ReferenceError: G502 is not defined


<asp:LinkButton ID="lkSelect" runat="server" Font-Names="Tahoma" Font-Size="8" OnClientClick='<%# "CallParent(" +Eval("l_room_no").ToString() + ");" %>'><%# Eval("Cell_Data") %></asp:LinkButton> 

Только тогда, когда:

Eval("l_room_no") = G502 

мой скрипт функция:

function CallParent(room) { 
      // window.opener.DrawPaths(room); 
      // window.close(); 
      alert(room); 
     } 
+0

Где именно находится 'G502'? Возможно, вы хотите добавить кавычки или, лучше, использовать ['JavaScriptStringEncode'] (https://msdn.microsoft.com/en-us/library/dd991914.aspx)? – CherryDT

ответ

1

Аргумент CallParent должен быть заключен между кавычками. Однако, так как выражение привязки данных уже использует одинарные и двойные кавычки, вы можете передать преобразованный код символа в string.Format:

<asp:LinkButton ... OnClientClick='<%# string.Format("CallParent({0}{1}{0});", (char)39, Eval("l_room_no")) %>' Text='<%# Eval("Cell_Data") %>' /> 

В этом примере предполагается, что вы используете C#. VB.NET эквивалент (char)39 будет chr(39).

+0

работает как магия, не могли бы вы подробнее рассказать о '(char) 39' –

+1

39 - код символа одиночной кавычки в таблицах ANSI и Unicode (http://www.alanwood.net/demos/ ansi.html). Использование нотации '(char) 39' позволяет указать этот символ, не введя его буквально в команду, что вызовет конфликт с внешними одинарными кавычками (' OnClientClick = '...' '). – ConnorsFan

1

В соответствии с текущей реализацией G502 рассматривается как переменная, поэтому вы получаете ошибку.

OnClientClick="<%#string.Format("CallParent('{0}');",Eval("l_room_no")) %>" 
+0

'Я получаю ошибку парсера: тег сервера не очень хорошо сформирован.' –

+0

@AnynameDonotcare, используйте 'OnClientClick =" <% # string.Format ("CallParent ('{0}');", Eval ("l_room_no"))%> "' – Satpal