【发布时间】:2009-01-26 20:07:05
【问题描述】:
我有一些使用 Eval 生成对 javascript 函数的调用的 aspx 代码:
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"
);
注意: 为了便于阅读,我已将生成的 " 实体引用转换为引号。
我现在需要在 javascript 函数调用中添加第三个参数,一个标题:
Javascript(为便于阅读而包装)
return DoStuff(this,
"3F2504E0-4F89-11D3-9A0C-0305E82C3301",
"AllisonAngel.jpg"
);
注意: 为了便于阅读,我已将生成的 " 实体引用转换为引号。
代码隐藏文件中已经存在一个用于返回项目标题的函数:
C#(为便于阅读省略代码):
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: How to access repeater generated elements from javascript?
【问题讨论】:
标签: asp.net