【问题标题】:How to call a codebehind function using javascript?如何使用 javascript 调用代码隐藏函数?
【发布时间】:2015-10-17 06:56:34
【问题描述】:

我正在尝试在函数后面调用此代码:

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 调用 Insert 函数,那将不胜感激。我已经尝试了一些来自谷歌的东西,但它们似乎都不起作用。 提前致谢

【问题讨论】:

标签: javascript c# asp.net


【解决方案1】:

你可以试试这个:

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

【讨论】:

  • 感谢您的快速回复,您能告诉我是在我的 foction 中还是在代码 (aspx.cs) 的开头添加这个?
  • 它不工作,页面刚刚重新加载甚至没有进入插入功能。 :(
  • 在按钮的事件方法中添加它,它应该可以工作
  • 不幸的是它没有。或者我只是以某种方式做错了
【解决方案2】:

我们可以将 [WebMethod] 用于我们想要从 JavaScript 调用的方法。据我所知,这应该是一种静态方法。 我们可以使用

从 JavaScript 调用该方法
PageMethods.MethodNameOnCodeBehindClass()

那么您的场景是否有可能创建一个可以调用您想要的方法的静态方法。

【讨论】:

  • 这是我的第一个想法,但我似乎无法从 Javascript 调用公共静态方法。更不用说从公共静态中调用受保护的了。
  • 这是我们可以做的,伙计。如果您同意从 Javascript 调用公共静态方法。因为最近我做了同样的实现。顺便说一句,我没有得到你的评论:p,你到底想说什么..
【解决方案3】:

你也可以试试:

ScriptManager.RegisterClientScriptBlock(this,Gettype(this),"","validate();",true);

【讨论】:

    【解决方案4】:

    Ok 原来是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 的验证。完成后,我将执行服务器端数据上传。完成后似乎非常基本。希望以后能帮到别人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2014-06-13
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多