将多个Eval()传递给ASPX中的JavaScript函数

时间:2009-04-14 15:16:09

标签: asp.net javascript

我正在尝试从Eval()文件向JavaScript函数传递多个.aspx参数,但我不断收到编译器错误。我是JavaScript的新手,之前从未真正使用过Eval()。我哪里错了?

NB :下面显示的行实际上都在一行上,但为了清晰起见,这里包含了一行:

<asp:LinkButton runat="server" Text='<%#Eval("Title")%>'
    OnClick='javascript:ShowEventDetails'
    CommandArgument='<%#
        Eval("EventID").ToString()          & Eval("Title").ToString() &
        Eval("Location").ToString()         & Eval("StartTime").ToString() &
        Eval("Description").ToString()      & Eval("Link").ToString() &
        Eval("ContactFirstName").ToString() & Eval("ContactLastName").ToString() &
        Eval("ContactEmail").ToString()     & Eval("InsertionTime").ToString() &
        Eval("EventAdmin").ToString()%>); ' />

有更好的方法吗?如果是这样,他们是什么?

3 个答案:

答案 0 :(得分:1)

OnClick是控件上的一个属性,它需要对事件处理程序方法的引用。将JavaScript放在OnClick属性中将不起作用。

如果要在单击按钮时执行任意JavaScript,请使用OnClientClick。我认为你想将evals传递给ShowEventDetails作为参数(格式化为可读性):

<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("Title")%>' 
    OnClientClick='ShowEventDetails("<%# Eval("EventID").ToString() %>",
        "<%# Eval("Title").ToString() %>",
        "<%# Eval("Location").ToString() %>",
        "<%# Eval("StartTime").ToString() %>",
        "<%# Eval("Description").ToString() %>",
        "<%# Eval("Link").ToString() %>",
        "<%# Eval("ContactFirstName").ToString() %>",
        "<%# Eval("ContactLastName").ToString() %>",
        "<%# Eval("ContactEmail").ToString() %>",
        "<%# Eval("InsertionTime").ToString() %>",
        "<%# Eval("EventAdmin").ToString() %>");' />

基本上你构建一个长字符串:

ShowEventDetails('123','Event Title','New York' ... etc ...

单击LinkBut​​ton时在JS中执行。

答案 1 :(得分:0)

执行此操作的最佳方法是在代码隐藏中设置OnClientClick属性,如下所示:

LinkButton lb = new LinkButton(); //Instantiate the linkbutton wherever you need to

一旦你这样做,使用String.Format将你的物品放入OnClientClick财产。

lb.OnClientClick = String.Format("javascript:ShowEventDetails
( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}');", 
  EventID.ToString(), Title.ToString(), Location.ToString(), StartTime.ToString(), 
  Description.ToString(), Link.ToString(), ContactFirstName.ToString(),
  ContactLastName.ToString(), ContactEmail.ToString(), InsertionTime.ToString(),
  EventAdmin.ToString() );

答案 2 :(得分:0)

从aspx客户端传递多个参数的另一种方法是,下面给出了示例代码

  

使用两个双引号( +&#34;,&#34;&#34;&#34; + Eval(&#34; xxx&#34;)。ToString()+&#34; &#34;&#34; )如果你想传递一个字符串参数

OnClientClick='<%#"javascript:return OpenDetailsPage(" + Eval("xxx").ToString() + ",""" + Eval("xxx").ToString() + """," _
                                                + Eval("xxx").ToString() + "," + Eval("xxx").ToString() + "," + Eval("xxx").ToString() + "," _
                                                + Eval("xxx").ToString() + ",""" + Eval("xxx").ToString() + """,this);"%> '