2015-10-17 86 views
0

我试图调用函数后面的代码:如何使用javascript调用代码隐藏功能?

protected void Insert(object sender, EventArgs e) 
     { 
      blah blah blah code 
      this.BindGrid(); 
     } 

而在.aspx文件我有我的Java功能,看起来像这样:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
<asp:Button ID="Button2" runat="server" Text="Call Button Click" Style="display:none" OnClick="Insert" /> 
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClientClick="return Validate();" Width="100" /> 

     <script type="text/javascript"> 
       function Validate() 
       { 
        var id = document.getElementById("txtStudentID").value; 
        Number(id); 
        var fn = document.getElementById("txtFirstName").value; 
        String(fn); 
        var ln = document.getElementById("txtLastName").value; 
        String(ln); 
        var cls = document.getElementById("txtClass").value; 
        String(cls); 
        var rn = document.getElementById("txtRollNumber").value; 
        Number(rn); 
        My code blah blah blah 
        document.getElementById("Button2").click(); 
        PageMethods.Insert(onSuccessMethod, onFailMethod); 
       }; 
      </script> 

我需要插入到当我按下按钮添加(可见的按钮)时工作。 我不确定我的逻辑是否正确,或者有更好的方法。 如果有人知道热门,我会非常感激,我可以从我的javascript调用插入函数。我尝试了谷歌的一些东西,但没有一个似乎工作。 由于事先

+1

检查http://stackoverflow.com/a/4558607/2558060 – Damith

+0

嗯,我想我将不得不通过ajax,因为我无法将我的受保护的方法更改为公共静态。 –

+0

检查以下网址,它将帮助http://www.aspsnippets.com/Articles/Call-Code-Behind-Server-Side-function-from-Client-Side-code-in-ASPNet-using-C-and -VBNet.aspx http://www.codeproject.com/Articles/180355/Calling-a-code-behind-function-from-JavaScript – Ashokreddy

回答

-2

好它原来是ONCLICK和的OnClientClick的一个简单的问题。 OnClientClick是首先执行的功能,一旦完成则进入OnClick功能。在一天结束的时候这里是我结束了:后面 代码:

public void Validate(object sender, EventArgs e) 
{ 
     boring code blah blah blah 
} 

这里的ASPX代码

<script id="validity" type="text/javascript"> 

     function Validate() { 

      Blah blah blah boring code 
     } 
    </script> 
    <asp:Button ID="btnAdd" runat="server" OnClientClick="return Validate();" OnClick="Validate" 
      Text="Add" Width="100" /> 

我使用的OnClientClick执行基于JavaScript的验证。一旦完成,我会执行服务器端的dataupload。一旦完成似乎很基础。我希望它可以帮助未来的其他人

2

你可以试试这个:

Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","Validate()",true); 
+0

感谢您的快速回复,你能告诉我,如果我添加这里面我的功能或在代码的开头(aspx.cs)? –

+0

好吧,它不工作,页面刚刚重新加载甚至不会进入插入功能。 :( –

+0

添加这里面的按钮的事件方法,它应该工作 –

1

我们可以使用[的WebMethod]为此我们想从JavaScript调用的方法。根据我的知识,这应该是一个静态方法。 我们可以通过使用

PageMethods.MethodNameOnCodeBehindClass() 

从JavaScript调用该方法因此有可能是您的方案以创造出可以叫你期望的方法是静态方法。

+0

这是我的第一个想法,但我似乎我甚至无法用Javascript调用公共静态方法,更不用说从public static调用protected。 –

+0

这就是我们可以做的好友..如果你同意从Javascript调用一个公共静态方法,因为最近我有顺便说一下,我没有得到你的评论:p,你究竟想说什么? –

1

你还可以尝试:

ScriptManager.RegisterClientScriptBlock(this,Gettype(this),"","validate();",true); 
相关问题