1

肯定会被标记为重复的,但是经过大量的问题和示例后,我无法解决我的问题。
我想要的是?
从客户端 java 脚本调用 asp.net 中的服务器端事件处理程序不会在服务器端进行。我通过设置断点检查它,页面闪烁但未调用服务器端方法。
我对后面代码的点击事件是

  protected void btninsert_Click(object sender, EventArgs e)
  {
      // my code
  }

.aspx 文件

   <asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn"
      OnClientClick="DoPost()" Text="Save" />

Javascript方法是

   function DoPost() {
        function DoPost() {
        var chk = document.getElementById('<%= chkstatus.ClientID %>');
        if (chk.checked)
            __doPostBack('<%= btninsert.ClientID %>', 'OnClick');
        return true;
        //return false;
    } 
    } 

我也试过这个 __doPostBack('btninsert', 'OnClick');__doPostBack('btninsert', '');$('btnSubmit').trigger('click');没有成功。

我究竟做错了什么?

编辑:如果我使用OnClick事件,那么无论方法如何,它都会进入服务器端if condition事件DoPost

4

6 回答 6

7

啊,这很简单。感谢所有答案。
解决方案:对服务器端事件和客户端事件
使用OnClick属性OnClientclick进行验证。 OnClientClickjavascript 方法将返回truefalse它决定服务器端 onclick 事件是否会触发。
代码将是这样的

  <script type="text/javascript">
    function DoPost() {
        var chk = document.getElementById('<%= chkstatus.ClientID %>');
        if (chk.checked) {
            var c = confirm("are you sure?");
            if (c == true) {
                return true;
            } else
            { return false; }
        }
        return true;
    } 
</script>

和 Button 标签

<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn"
   OnClientClick="return DoPost();" OnClick="btninsert_Click" Text="Save" />
于 2013-05-24T07:09:00.503 回答
4

它可以工作!

如果您调用 __doPostBack('btninsert', ''),请将以下内容添加到 Page_Load

 protected void Page_Load(object sender, EventArgs e)
{
    if ( Request["__EVENTTARGET"] == "btninsert" ) {
        btninsert_Click(sender, e);
    }
}
于 2013-05-23T14:25:52.363 回答
3
<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn" OnClick="btninsert_Click" OnClientClick="DoPost()" Text="Save" />

添加OnClick="btninsert_Click",因为没有这些信息,asp.net 无法知道要为“Click”事件运行哪个事件处理程序。如果您想控制是否通过客户端脚本回发。你可以这样做:

<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn" OnClick="btninsert_Click" OnClientClick="return DoPost()" Text="Save" />

function DoPost() {
        __doPostBack('<%= btninsert.ClientID %>', 'OnClick');
        return true;
      //return false;
    } 

注意OnClientClick="return DoPost()"

于 2013-05-23T10:17:42.747 回答
0
<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn"
      OnClientClick="return DoPost();" Text="Save" />

像这样修改你的行

于 2013-05-23T10:01:19.670 回答
0

您可以使用 Webmethod 尝试 Ajax。我在我的项目中使用了它,它工作正常!您可能会在这里看到问题、解决方案和代码:http: //www.codeproject.com/Questions/416748/How-to-Call-WebMethod-of-Csharp-from-JQuery

于 2013-05-23T10:05:48.643 回答
0

使用 ASP 链接按钮而不是 ASP BUTTON。按钮控件不是从 javascript 调用的,因为它的类型是提交,而链接按钮类型是按钮。

例如我添加了两个asp控件

        <asp:LinkButton ID="lbtest" runat="server" Text="Link Button"></asp:LinkButton>
        <asp:Button runat="server" ID="btnbutton" Text="Button" /> 

并执行页面当我们查看运行页面的源代码时,它看起来像这样

        <a id="lbtest" href="javascript:__doPostBack('lbtest','')">Link Button</a>
        <input type="submit" name="btnbutton" value="Button" id="btnbutton" />
于 2013-05-23T12:41:26.277 回答