Visual Studio: ASPX: поврежденный синтаксис 'IIf': странная ошибка
Следующее объявление в моем ASPX-файле содержит ОШИБКУ в аргументах IIf()...
<br /><asp:Label ID="lblvalLOF_IS_DUE" runat="server"
Text='<%# IIf((Eval("aIsLOF_Due") = "True"), "☑", "☐")%>'
style="font-size: 2em;"/>
Ошибка, которая отображается в окне [Список ошибок]:
Аргумент не указан для параметра 'FalsePart' в 'Открытая функция IIf (выражение как логическое значение, TruePart как объект, FalsePart как объект) как объект'.
От " IIF" до конечной кавычки #9745 есть "волнистое" подчеркивание ", указывающее на наличие синтаксической ошибки в аргументах IIf.
Я думаю, что есть некоторый конфликт с объявлением специальных символов - или QUOTEs или AMPERSAND или символ #.
Любое руководство будет оценено. Заранее спасибо.
2 ответа
ОК, друзья... Я упростил код aspx и удалил код сервера следующим образом:
<asp:Label ID="lblvalLOF_IS_DUE" runat="server"
Text='<%# IIf((Eval("aIsLOF_Due") = "True"), "☑", "☐") & ";" %>'
style="font-size: 3em;"/>
Я вернулся к исходной кодировке IIf(), но отделил точку с запятой от значений, возвращаемых IIf() с конкатенацией точки с запятой после IIf(). Эта конструкция также должна работать, если цвета задаются условно в коде aspx.
Кажется, это связано с особыми случаями "&...;"
в разборе aspx внутри VS.
Интересно, что в C# у меня есть ошибка
Ошибка 1| Новая строка в константе
и это также исправлено после удаления точки с запятой, поэтому этот рабочий образец
<asp:Label ID="lblvalLOF_IS_DUE" runat="server" Text='<%# IIf((Eval("aIsLOF_Due") == "True"), "☑", "☐")%>' style="font-size: 2em;"/>
и то же самое для C#
<asp:Label ID="lblvalLOF_IS_DUE" runat="server" Text='<%# ((Eval("aIsLOF_Due") = "True")? "☑": "☐")%>' style="font-size: 2em;"/>