从javascript调用asp.net codebehind函数
我有一个名为LinkControl的自定义控件:从javascript调用asp.net codebehind函数,javascript,webforms,code-behind,Javascript,Webforms,Code Behind,我有一个名为LinkControl的自定义控件: <asp:Panel runat="server"> <script language="javascript" type="text/javascript"> function CheckImage() { var str = document.getElementById('<%=lblBookmarkId.ClientID%>').firstChild.nodeValue;
<asp:Panel runat="server">
<script language="javascript" type="text/javascript">
function CheckImage() {
var str = document.getElementById('<%=lblBookmarkId.ClientID%>').firstChild.nodeValue;
PageMethods.CodebehindCheckImage(str);
return false;
}
</script>
<asp:Label runat="server" ID="lblBookmarkId" Style="visibility: hidden;" />
<asp:Button runat="server" ID="btnCheck" Text="Check" OnClientClick="return CheckImage();" CausesValidation="false""/>
</asp:Panel>
问题是,当我为中继器内的任何控件按下按钮btnCheck时,当我在函数CodebehindCheckImage中调试时,我总是得到中继器中最后一个控件中包含的字符串lblBookmarkId.Text
欢迎提出任何建议
问候
Wojciech您可以修改javascript函数,如下所示
function CheckImage(str) {
PageMethods.CodebehindCheckImage(str);
return false;
}
&将中继器中的代码更改为附加OnClient单击,如下所示
<asp:Button runat="server" ID="btnCheck" Text="Check"
OnClientClick='<%# Eval("BookMarkText", "return CheckImage(\"{0}\");") >
所有这些代码都在中继器内部?因此,您有几个用于CheckImage
的Javascript函数声明?我认为您需要定义一次函数(如在父页面中),然后在OnClientClick
调用中将特定字符串作为参数传递
<asp:Button runat="server" ID="btnCheck" Text="Check"
OnClientClick='<%# Eval("BookMarkText", "return CheckImage(\"{0}\");") >