У меня есть код aspx, который использует Eval для генерации вызова функции javascript:
ASP.NET(для удобства чтения):
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this, \"{0}\");") %>'
Text="Do stuff" />
это генерирует javascript, похожий на:
Javascript (завернутый для чтения):
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301"
);
Примечание. Я преобразовал сгенерированные ссылки " в кавычки для удобства чтения.
Теперь мне нужно добавить 3-й параметр в вызов функции javascript, подпись:
Javascript (завернутый для удобочитаемости)
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301",
"AllisonAngel.jpg"
);
Примечание. Я преобразовал сгенерированные ссылки " в кавычки для удобства чтения.
В файле кода уже существует функция, которая используется для возврата заголовка элемента:
С# (код опущен для удобочитаемости):
protected string GetItemText(MySomething item)
{
...
}
Я знаю, что указанную выше функцию можно вызывать из файла aspx, используя синтаксис, подобный:
ASP.NET(завернутый, код опущен, для чтения):
<asp:LinkButton ... runat="server"
Text="<%# GetItemText((MySomething)Container.DataItem) %>"
... />
Итак, теперь я хочу использовать эту функцию для включения третьего параметра в функцию javascript.
Начиная с:
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this, \"{0}\", \"Todo - Insert caption here\");") %>'
Text="Do stuff" />
Мне нужно изменить: "Todo - Insert caption here
"
в вызов: <%# GetItemText((MySomething)Container.DataItem) %>
Слепо попробуйте очевидное:
ASP.NET(для удобства чтения):
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
GetItemText((MySomething)Container.DataItem),
"return DoStuff(this, \"{0}\", \"{1}\");") %>'
Text="Do stuff" />
Но это жалуется, поскольку Eval() принимает только два параметра.
Я попробовал немного менее поучительный:
ASP.NET(завернутый для удобства чтения)
<asp:LinkButton runat="server"
OnClientClick='<%# Eval(
"NodeGUID",
"return DoStuff(this,
\"{0}\",
\""+GetItemText((MySomething)Container.DataItem)+"\");") %>'
Text="Do stuff" />
Но это тоже не работает.
Вопросы, относящиеся
ASP.NET: как получить доступ к регенерированным элементам из javascript?