Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .toggle()带asp:按钮的div_C#_Jquery_Html_Asp.net_Postback - Fatal编程技术网

C# .toggle()带asp:按钮的div

C# .toggle()带asp:按钮的div,c#,jquery,html,asp.net,postback,C#,Jquery,Html,Asp.net,Postback,我有一个基本的div,我想在客户端单击asp:按钮时使用。只要代码运行,它就可以工作,但我认为服务器端的OnClick事件处理程序会导致div在被单击后重置。基本上,div消失大约0.01毫秒,然后立即重新出现。下面是我的问题的最简单的代码示例 以下是发生的情况的示例: Default.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicati

我有一个基本的div,我想在客户端单击asp:按钮时使用。只要代码运行,它就可以工作,但我认为服务器端的OnClick事件处理程序会导致div在被单击后重置。基本上,div消失大约0.01毫秒,然后立即重新出现。下面是我的问题的最简单的代码示例

以下是发生的情况的示例:

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Testing</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script type="text/javascript">
        function ToggleMe() {
            $('#toggleMe').toggle();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div id="toggleMe">
            <label>Hello World</label>
        </div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" OnClientClick="ToggleMe();"/>
    </form>
</body>
</html>
我已经尝试了.removeClass、.addClass、.css。。。我不认为我使用的jQuery与单击按钮时发生的回发问题一样重要

我正在运行Chrome来测试这一点,如果这很重要的话


提前感谢您的时间和帮助

HTML的javascript部分在用户浏览器中执行。受保护的void button1\u click方法在服务器上执行。发生的情况是,用户的浏览器将正确切换div,导致其消失。不幸的是,ASP.NET按钮的HTML随后将重新提交页面,这意味着浏览器将从服务器刷新HTML。服务器没有发生切换的概念,因为javascript没有在那里执行,而int i设置为5,div在进入服务器后刷新页面后被重新设置为可见。你的选择是:

1) 不要对按钮单击使用任何服务器端逻辑,并摆脱

<asp:Button ID="Button1" ... /> 

HTML的javascript部分在用户的浏览器中执行。受保护的void button1\u click方法在服务器上执行。发生的情况是,用户的浏览器将正确切换div,导致其消失。不幸的是,ASP.NET按钮的HTML随后将重新提交页面,这意味着浏览器将从服务器刷新HTML。服务器没有发生切换的概念,因为javascript没有在那里执行,而int i设置为5,div在进入服务器后刷新页面后被重新设置为可见。你的选择是:

1) 不要对按钮单击使用任何服务器端逻辑,并摆脱

<asp:Button ID="Button1" ... /> 

当您单击aspx:按钮时,它将提交页面。如果您使用常规的html按钮,这会容易得多

<input type="button" onclick="ToggleMe()">Button</input>

当您单击aspx:按钮时,它将提交页面。如果您使用常规的html按钮,这会容易得多

<input type="button" onclick="ToggleMe()">Button</input>

如果希望首先执行客户端单击,您可能需要使用jquery
click
函数,而不是
OnClientClick
return false
:当您单击按钮时,是否确实需要回发?激情代码:我相信JavaScript是首先执行的,但DOM会在服务器端代码运行并返回。逐出教会:是的,这是必须发生的。我决定在这个链接上使用这个解决方案:谢谢你们两个试图帮助我!如果希望首先执行客户端单击,您可能需要使用jquery
click
函数,而不是
OnClientClick
return false
:当您单击按钮时,是否确实需要回发?激情代码:我相信JavaScript是首先执行的,但DOM会在服务器端代码运行并返回。逐出教会:是的,这是必须发生的。我决定在这个链接上使用这个解决方案:谢谢你们两个试图帮助我!就我的目的而言,它更容易但不正确:(无论如何,谢谢!就我的目的而言,它更容易但不正确:(无论如何,谢谢!这是一些很棒的解决方案!谢谢你的回答!也谢谢你验证我关于发生了什么的假设!这是一些很棒的解决方案!谢谢你的回答!也谢谢你验证我关于发生了什么的假设!
protected void Button1_Click(object sender, EventArgs e)
{
    int i = 5;
    toggleMe.Visible = !toggleMe.Visible;
}
<input type="button" onclick="ToggleMe()">Button</input>
function ToggleMe() {
   $('#toggleMe').toggle();
   return false;
}