在不使用ajax的情况下使用javascript调用C#代码隐藏方法

在不使用ajax的情况下使用javascript调用C#代码隐藏方法,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我的asp.net文件中有两个按钮 <asp:Button ID="BTN_Send_LA" runat="server" Text="Save" OnClientClick="ConfirmSendData()"></asp:Button> //The button the client will click <asp:Button ID="UploadButton" runat="server" Text="" OnClick="BTN_Send_LA_Cli

我的asp.net文件中有两个按钮

<asp:Button ID="BTN_Send_LA" runat="server" Text="Save" OnClientClick="ConfirmSendData()"></asp:Button>
//The button the client will click

<asp:Button ID="UploadButton" runat="server" Text="" OnClick="BTN_Send_LA_Click"/>
//Dummy Button for the JS .click()

//客户端将单击的按钮
//用于JS.click()的虚拟按钮
以下是我的Js部分:

function ConfirmSendData() {
    var r = confirm("Êtes vous bien: " + document.getElementById("<%=DDL_LaveurLA.ClientID%>").options[document.getElementById("<%=DDL_LaveurLA.ClientID%>").selectedIndex].text + " sinon veuillez changer dans le champ spécifié 'Laveur'");

    if (r == true) {

        var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
        clickButton.click();

        //$('UploadButton').trigger('click'); TEST 1
        //__doPostBack not working aswell

    }
}
函数ConfirmSendData(){
var r=确认(“您的支持:”+document.getElementById(“”)。选项[document.getElementById(“”)。selectedIndex]。文本+“sinon veuillez转换器在“Laver”项目中的应用”);
如果(r==true){
var clickButton=document.getElementById(“”);
单击按钮。单击();
//$('UploadButton')。触发器('click');测试1
//__doPostBack也不起作用
}
}
因此,我希望做的是:

  • 客户端单击第一个按钮(触发JS)=>工作
  • R为真=>有效
  • JS部分触发Onclick of UploadButton=>不工作
  • 我不明白为什么这个方法不起作用,因为它似乎是大多数其他答案针对StackOverflow的一般方法

    更新:

    好的,我已经尝试了下面提出的所有解决方案,现在我遇到了一些奇怪的问题:

    当我单击客户机按钮时,以下三种情况中的一种会随机发生(调试器遵循的路径)

    1:按钮单击执行空白回发(IsPostBack==true) 事件OnClick=“BTN\u发送\u LA\u单击”未触发

    2:按钮单击执行空白回发(IsPostBack==false) 事件OnClick=“BTN\u发送\u LA\u单击”未触发

    3:该按钮正确触发虚拟按钮的事件OnClick=“BTN\u Send\u LA\u Click”

    我不明白为什么。当我直接点击虚拟按钮时,一切正常

    每次按CTRL+F5键时,第一次单击客户端按钮将100%工作(触发事件)

    另外:在我的事件BTN_Send_LA_Click()中,我更改多个控件的背景色(浅绿色)

    1:如果我单击dummy按钮=>控件的背景色会改变

    2:如果我单击客户端按钮,即使触发了BTN_Send_LA_click(),背景色也不会改变

    为什么??我完全不明白这一点

    更新代码:

            function ConfirmSendData()
         {
                /*
                var dd = document.getElementById("<%=DDL_LaveurLA.ClientID%>");
                var txt = dd.options[dd.selectedIndex].text;
                var r = confirm("Êtes vous bien: " + txt + " sinon veuillez changer dans le champ spécifié 'Laveur'"); */
    
                var r = confirm("Êtes vous bien: " + document.getElementById("<%=DDL_LaveurLA.ClientID%>").options[document.getElementById("<%=DDL_LaveurLA.ClientID%>").selectedIndex].text + " sinon veuillez changer dans le champ spécifié 'Laveur'");
    
                if (r == true) {
                    //$("#<%=UploadButton.ClientID%>").click();
    
                    var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
                    clickButton.click();
    
                }
                return false;  
        }
    
    函数ConfirmSendData()
    {
    /*
    var dd=document.getElementById(“”);
    var txt=dd.options[dd.selectedIndex]。文本;
    var r=确认(“您的名字:+txt+”西农·维列兹变换器在“拉沃尔”世界冠军杯上)*/
    var r=确认(“您的支持:”+document.getElementById(“”)。选项[document.getElementById(“”)。selectedIndex]。文本+“sinon veuillez转换器在“Laver”项目中的应用”);
    如果(r==true){
    //$(“#”)点击();
    var clickButton=document.getElementById(“”);
    单击按钮。单击();
    }
    返回false;
    }
    
    您应该使用
    $(“#”)而不是
    $('UploadButton')
    ,因为
    asp:Button
    元素不会在元素中仅使用id生成
    UploadButton

    function ConfirmSendData() {
        var r = confirm("Êtes vous bien: " + document.getElementById("<%=DDL_LaveurLA.ClientID%>").options[document.getElementById("<%=DDL_LaveurLA.ClientID%>").selectedIndex].text + " sinon veuillez changer dans le champ spécifié 'Laveur'");
    
        if (r == true) {
    
            var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
            clickButton.click();
    
            // alternative variant for jquery
            // $("#<%=UploadButton.ClientID%>").click();
        }
    
    }
    
    函数ConfirmSendData(){
    var r=确认(“您的支持:”+document.getElementById(“”)。选项[document.getElementById(“”)。selectedIndex]。文本+“sinon veuillez转换器在“Laver”项目中的应用”);
    如果(r==true){
    var clickButton=document.getElementById(“”);
    单击按钮。单击();
    //jquery的替代变量
    //$(“#”)点击();
    }
    }
    

    还有一件事,函数
    ConfirmSendData
    需要
    返回false
    ,以防止通过第一个按钮提交数据

    您已经注释掉了以下内容,我想这意味着您已经尝试过了,但它不起作用

    //$('UploadButton').trigger('click'); TEST 1
    
    jQuery需要在元素的ID之前加上
    #
    字符才能找到它,因此请尝试以下方法

    $("#<%=UploadButton.ClientID%>").click();
    
    $(“#”)点击();
    
    我还将通过只查找一次下拉元素,将函数的第一部分稍微更新为更可读(和更高效)的版本

    var dd = document.getElementById("<%=DDL_LaveurLA.ClientID%>");
    var txt = dd.options[dd.selectedIndex].text;
    var r = confirm("Êtes vous bien: " + txt + " sinon veuillez changer dans le champ spécifié 'Laveur'");
    
    var dd=document.getElementById(“”);
    var txt=dd.options[dd.selectedIndex]。文本;
    var r=确认(“您的名字:+txt+”西农·维列兹变换器在“拉沃尔”世界冠军杯上);
    
    试试这个:

    __doPostBack('<%= UploadButton.UniqueID %>', '');
    
    uu doPostBack(“”,”);
    
    除了以下几点之外,一切都正常:

  • 您需要在
    if
    语句中添加一个结束
    }
  • ConfirmSendData()
    需要
    返回false
    以防止第一个按钮提交
  • i、 e

    函数ConfirmSendData(){
    var r=确认(“您有什么……”);
    如果(r==true){
    var clickButton=document.getElementById(“”);
    单击按钮。单击();
    }
    返回false;
    }
    
    您尝试过
    $(“#”)了吗。单击()?欢迎使用StackOverflow。请注意,一般情况下,问题都保持在相当专业的水平,因此您不希望在问题中看到像
    guyz
    这样的词。获取元素或触发单击事件,哪一部分不起作用?clickEvent分配后包含什么?@aw04触发事件随机发生(检查更新部分)这不就是上面javascript代码的jquery等价物吗?可能是@aw04,但我知道我过去在使用
    .click()时遇到过跨浏览器问题(现在记不清确切的内容)所以倾向于使用jQuery版本。你可能是对的,所以很高兴撤回答案,如果我只是对原因感到好奇的话,在我看来这仍然是一个有用的答案。您好,谢谢您的帮助,我已经更新了最初的问题,因为它可以随机工作(与您的解决方案一起)。虽然这是正确的,但它没有解释为什么javascript部分不能工作。您的示例只是再次使用jquery执行相同的操作。@aw04不起作用,因为jquery选择器未找到元素
    $('UploadButton')
    ,因为这是带有动态
    ID=“UploadButton”
    asp:Button
    ,我明白了,
    function ConfirmSendData() {
        var r = confirm("Êtes vous bien...");
        if (r == true) {
            var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
            clickButton.click();
        }
        return false;
    }