asp.net – 如何将多个参数传递给Eval()?

我有一点aspx代码使用Eval生成一个javascript函数的调用:

ASP.NET(包装为可读性):

<asp:LinkButton runat="server"
   OnClientClick='<%# Eval(
         "NodeGUID", 
         "return DoStuff(this, \"{0}\");") %>'
   Text="Do stuff" />

这会产生类似于

Javascript(包装为可读性):

return DoStuff(this,
      "3F2504E0-4F89-11D3-9A0C-0305E82C3301"
   );

注意:我已经将生成的& quot;实体引用引用可读性.

我现在需要添加一个第三个参数给javascript函数调用,一个标题:

Javascript(包装为可读性)

return DoStuff(this,
      "3F2504E0-4F89-11D3-9A0C-0305E82C3301",
      "AllisonAngel.jpg"
   );

注意:我已经将生成的& quot;实体引用引用可读性.

代码隐藏文件中已经存在用于返回项目标题的函数:

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 – 在这里插入字幕”

调用:<%#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: How to access repeater generated elements?

最佳答案
诀窍不是将多个项目传递给eval,而是将多个eval传递给您要用于格式化数据的任何内容.你也可以这样做 – 这将保持aspx文件中的演示文稿像你想要的…

<asp:LinkButton 
   runat="server" 
   OnClientClick='<%# string.Format(
          "return DoStuff(this, \"{0}\", \"{1}\");", 
          Eval("NodeGUID"), 
          GetItemText((MySomething)Container.DataItem)) %>' 
   Text="Do stuff" />

转载注明原文:asp.net – 如何将多个参数传递给Eval()? - 代码日志