Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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
是否有任何可能的方法在一次asp按钮点击中以javascript和服务器端代码显示消息_Javascript_Asp.net - Fatal编程技术网

是否有任何可能的方法在一次asp按钮点击中以javascript和服务器端代码显示消息

是否有任何可能的方法在一次asp按钮点击中以javascript和服务器端代码显示消息,javascript,asp.net,Javascript,Asp.net,我的标签和按钮: <h1 id="display"></h1> <asp:Button ID="Button1" runat="server" Text="display" Onclientclick="return show()" onclick="Button1_Click" /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 我

我的标签和按钮:

<h1 id="display"></h1>

<asp:Button ID="Button1" runat="server" Text="display" 
     Onclientclick="return show()" onclick="Button1_Click" />

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

我的剧本:

<script type="text/javascript">

function show() {
   document.getElementById('display').innerHTML = 
                                         "iam client side code";
   return true;
}


protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = "iam server side code";
}

函数show(){
document.getElementById('display')。innerHTML=
“iam客户端代码”;
返回true;
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
Label1.Text=“iam服务器端代码”;
}
我的问题是,当我单击按钮click事件时,客户端代码调用,而下一个服务器端代码正在调用。当服务器端代码调用页面刷新时,客户端消息消失。如何显示这两条消息


提前感谢

当您编码服务器端按钮时,它将导致回发到服务器。因此,有两种方法可以处理这种情况

首先,您已经尝试的是仅在客户端处理消息显示。您需要做的是将服务器端按钮更改为一个简单的
input
元素

第二种方法是使用AjaxExtension
,它只会将您想要的控件发送到服务器端,不会导致整个页面重新加载,而是部分回发

第二次进近代码:更新代码如下:

<div>
    <asp:ScriptManager runat="server"></asp:ScriptManager>
    <h1 id="display"></h1>

    <asp:UpdatePanel runat="server">
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <asp:Button ID="Button1"  runat="server" Text="display" 
             Onclientclick="return show()" onclick="Button1_Click" />
        </ContentTemplate>
    </asp:UpdatePanel>  
</div>

您也可以从按钮返回调用javascript。 你可以遵循这个例子

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">
    <title></title>
    <script type="text/javascript">
        function show() {
            document.getElementById('display').innerHTML =  "iam client side code";
            return true;
        }
        </script> </head> <body>
    <form id="form1" runat="server">
    <h1 id="display"></h1>

<asp:Button ID="Button1" runat="server" Text="display"   onclick="Button1_Click" />

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </form> </body> </html>

在第一个场景中,如果我将服务器端按钮作为简单的“输入”元素,它的行为就像一个html按钮。按钮单击事件如何在服务器端触发,第二种方法工作得非常好:)我已经提到了只在客户端处理消息显示。
protected void Button1_Click(object sender, EventArgs e)
        {
            Label1.Text = "iam server side code";

            StringBuilder runscript = new StringBuilder();
            runscript.AppendLine("show();");

            ClientScriptManager manager = Page.ClientScript;
            manager.RegisterStartupScript(this.GetType(), "any", runscript.ToString(), true);
        }