2012-03-12 5 views
1

Я хочу вызвать функцию aC# с помощью javascript, поэтому я добавил невидимую кнопку asp.net в свой Default.aspx, и теперь я звоню, чтобы позвонить ей внутри javascript, чтобы он запускал функцию C#, но он дает «null», является нулевым или не является объектом. Я попытался переместить часть javascript во многие места, чтобы решить проблему, но она не сработала.Javascript getElementById дает ошибку «null» является нулевым или нет объектом

<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> 
+1

Вы уверены, что отображаемая страница использует литеральный формат 'id' вместо старого формата' 'ctl00'? –

+0

Я не уверен, но я использую .NET 4.0, поэтому, возможно, это будет не старый формат, я прав – HOY

+0

JavaScript находится на клиенте. C# находится на сервере. Вы не можете «вызывать» функцию C# из JavaScript - они находятся на двух разных машинах! –

ответ

2

попробовать это

 document.getElementById('<%=button1.ClientID%>') 
2

Вы должны решить эту проблему с помощью реализации Ajax. Таким образом, вы можете вызвать веб-сервис, который будет содержать некоторую бизнес-логику и отправит ответ клиенту.

  1. Создание веб-службы с использованием экв. (WCF, ServiceStack)
  2. Создать кнопку
  3. Подпишитесь на событие click с кнопкой jQuery и позвоните в веб-сервис.
  4. В функции обратного вызова успеха выполните некоторую логику на стороне клиента, например, обновите список книг.

С наилучшими пожеланиями,

Роб

1

Хотя я настоятельно рекомендую проводит АЯКС решение/WCF, проблема с текущим подходом, скорее всего, ID кнопки. Элементы управления ASP обычно не отображаются с идентификатором, указанным в разметке, но с префиксом «ct100» или «container $ id» или «container_id», в зависимости от версии ASP. Я бы предложил вам просмотреть источник на своей странице, чтобы увидеть визуализированный идентификатор и убедиться, что вы передаете его на свой document.getElementById.

Смежные вопросы