我想用javascript调用ac#函数,所以我在我的Default.aspx中添加了一个隐形的asp.net按钮,现在我想在javascript中调用它以便它会触发c#函数,但它给出了'null'为null或不是对象。我试图将我的javascript部分移动到很多地方来解决问题,但它没有用。
<asp:Content ID="HeaderContent" runat="server"
ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2> WELCOME </h2>
<div style="display: none;">
<asp:Button ID="button1" runat="server"
OnClick="btn_SearchLibrary_Click" />
</div>
<script type="text/javascript">
function displaymessage() {
var button = document.getElementById('button1');
button.click();
}
</script>
<!-- Some codes in here, below there is a gridview templatefield -->
<asp:TemplateField HeaderText="BookName"
SortExpression="BookName" ItemStyle-Width="150px">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1"
runat="server" Text='<%# Bind("BookName") %>'
NavigateUrl="javascript:displaymessage()"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:2)
您应该使用Ajax实现来解决这个问题。通过这种方式,您可以调用包含一些业务逻辑的Web服务,并将响应发送回客户端。
致以最诚挚的问候,
罗布
答案 1 :(得分:2)
试试这个
document.getElementById('<%=button1.ClientID%>')
答案 2 :(得分:1)
虽然我强烈建议您使用ajax / WCF解决方案,但当前方法的问题很可能是按钮的ID。 ASP控件通常不会使用您在标记中指定的ID进行呈现,而是以“ct100”或“container $ id”或“container_id”作为前缀,具体取决于ASP的版本。我建议您在页面上查看源代码以查看呈现的ID,并确保将其传递给document.getElementById。