关于ASP.NET:ASP.NET-是否可以从服务器代码触发回发?

关于ASP.NET:ASP.NET-是否可以从服务器代码触发回发?

ASP.NET - Is it possible to trigger a postback from server code?

是否可以以编程方式触发ASP.NET中服务器代码的回发? 我知道可以执行Response.Redirect或Server.Transfer重定向到页面,但是有没有办法在服务器代码中触发回发到同一页面(即,无需使用JavaScript技巧来提交表单)?


从客户端启动Asp.net回发(通常是表单提交)。我不确定您要达到什么目标。一些服务器端页面生命周期事件已经执行,您想要做的是再次引发先前的事件处理程序。


回发是由FORM提交引起的。您需要从客户端启动它们。


如果您希望从服务器启动通信而不是轮询,请查看Microsoft的SignalR。最简单的上下文是SignalR作为其示例代码的一部分,它是一个聊天应用程序。您将能够从背后的代码中发起消息,并在页面上以javascript事件的形式接收消息。

要发送的服务器代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the broadcastMessage method to update clients.
            Clients.All.broadcastMessage(name, message);
        }
    }
}

捕获服务器消息的客户端代码是'chat.client.broadcastMessage'的替代:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script type="text/javascript">
        $(function () {
            // Declare a proxy to reference the hub.
            var chat = $.connection.chatHub;
            // Create a function that the hub can call to broadcast messages.
            chat.client.broadcastMessage = function (name, message) {
                // Html encode display name and message.
                var encodedName = $('').text(name).html();
                var encodedMsg = $('').text(message).html();
                // Add the message to the page.
                $('#discussion').append('
<li>
' + encodedName
                    + ':' + encodedMsg + '
</li>
');
            };
            // Get the user name and store it to prepend to messages.
            $('#displayname').val(prompt('Enter your name:', ''));
            // Set initial focus to message input box.  
            $('#message').focus();
            // Start the connection.
            $.connection.hub.start().done(function () {
                $('#sendmessage').click(function () {
                    // Call the Send method on the hub.
                    chat.server.send($('#displayname').val(), $('#message').val());
                    // Clear text box and reset focus for next comment.
                    $('#message').val('').focus();
                });
            });
        });

您可以通过Ajax请求来完成。您必须让页面轮询服务器。服务器没有任何方式无需请求即可将信息推送到浏览器。但是,让某些Javascript在后台运行并每5秒(或更长,取决于您的需求)对服务器进行一次轮询可能是最好的解决方案。

附加

如果采用这种方式,则可以根据是否应执行回发,让服务器仅发送"是"或"否",甚至仅发送0或1。根据您的需求,没有很多理由真正使用AJAX的XML部分。只需运行一个简单的异步请求(可能带有几个querystring变量),然后返回一个简单的单词,甚至一个数字作为响应即可。这样,您就可以保留不需要的javascript来创建和解析XML。


对于使用较新版本.NET的用户,必须使用Page.ClientScript.GetPostBackEventReference,因为'this.GetPostBackEventReference(...)'已过时。也可能是Page.ClientScript.RegisterStartupScript(...


推荐阅读

    linux服务器分区命令?

    linux服务器分区命令?,系统,管理,信息,设备,时间,命令,基础,首次,平均,情况,l

    linux定时执行命令?

    linux定时执行命令?,时间,系统,服务,任务,工作,标准,情况,周期性,工具,命令,l

    linux看命令执行过程?

    linux看命令执行过程?,系统,服务,状态,软件,时间,数据,地址,命令,进程,情况,l

    linux登陆执行命令?

    linux登陆执行命令?,系统,服务,工具,地址,密码,百度,管理,检测,网络,第一,怎

    linux下执行命令行?

    linux下执行命令行?,工作,系统,信息,单位,命令,基础,地址,设备,权威,标准,mv

    linux安装执行命令?

    linux安装执行命令?,系统,软件,网络,密码,官方网站,在线,工作,盘中,电脑,第

    linux执行命令超时?

    linux执行命令超时?,时间,代码,系统,名字,环境,工作,服务,下来,名称,地址,如

    linux远程执行多命令?

    linux远程执行多命令?,工具,服务,命令,状态,暂停,代码,底部,时间,地址,系统,L

    重定向的linux命令?

    重定向的linux命令?,标准,信息,文件,服务,系统,概念,对比,基础知识,数字,设

    linux命令行执行工具?

    linux命令行执行工具?,工具,系统,网络,分析,工作,服务,状态,信息,电脑,发行,s

    linux执行命令超时?

    linux执行命令超时?,时间,代码,系统,名字,环境,工作,服务,下来,名称,地址,如

    linux安装执行命令?

    linux安装执行命令?,系统,软件,网络,密码,官方网站,在线,工作,盘中,电脑,第

    linux执行两条命令?

    linux执行两条命令?,单位,工作,地址,命令,连续,系统,分行,权威,信息,目录,Lin

    linux执行pl命令?

    linux执行pl命令?,代码,服务,工具,位置,标准,系统,首页,数据,操纵,环境,perl

    编程解析linux命令?

    编程解析linux命令?,系统,标准,基础,设备,发行,电脑,工具,密码,名字,适当,如

    linux命令执行10次?

    linux命令执行10次?,地址,工作,信息,系统,命令,目录,标准,设备,发行,文件,Lin

    linux执行命令后无号?

    linux执行命令后无号?,系统,环境,信息,工具,状态,数据,命令,文件,字符集,环

    linux服务器基本命令?

    linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,l

    linux服务器下载命令?

    linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,l

    linux周期执行命令?

    linux周期执行命令?,工作,系统,周期,地址,命令,工具,信息,时间,任务,目录,lin