我正在尝试从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()%>); ' />
有更好的方法吗?如果是这样,他们是什么?
答案 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 ...
单击LinkButton时在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);"%> '