我想知道是否有办法在服务器端触发消息框。
我的情况是我在侦察应用程序的服务器端有一些逻辑。在这个过程的中间需要做出一些决定。在这种情况下,我想触发带有YES,NO,CANCEL选项的消息框。
我的逻辑工作方式很难将它分成两个函数,先调用一个函数,然后提出问题并在回答时调用另一个函数。所以这对我来说是不合适的。
如果无法在侦察服务上触发消息框,是否有办法“模仿”它。所以调用服务方法,在中间暂停它,转到客户端,出现消息框,返回相同的服务方法并继续它。
为什么我需要这个:
我在侦察服务器端实现了依赖关系图(字段之间)。 更改一个字段后,将解析整个依赖关系图。 图的一个节点具有一些需要用户交互的逻辑。问题是我不知道是否会调用此方法(取决于图形),如果在此方法之后将调用其他节点。
答案 0 :(得分:1)
几个月前你问了一个非常相似的问题: Scout Eclipse present optional message on server side
MessageBox是一个客户端概念(包是:protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
if(this.Context.Handler is System.Web.UI.Page)
{
//Do what you need to do for aspx requests
}
}
)。
您需要将所需数据从服务器传输到客户端,并在客户端拦截此信息以显示所需的消息框。
答案 1 :(得分:1)
正如Jmini所说,MessageBox是一个客户端概念。您可以做的是发回一个状态(从服务器到客户端),在客户端进行检查并显示相应的消息(框)。但是你中断你的服务方法并且无法继续它停止的地方(或者你可以抛出一个VetoException,但这会中断你的服务方法,所以同样的问题)。在我看来,从服务器端“请求”用户交互也不是一个好的设计,因为在这种情况下,服务器端必须等待用户响应。
如果可能的话,我建议将你的逻辑分成不同的部分。首先,执行第一部分,直到达到需要用户交互的程度。然后,您可以保存当前的执行状态,返回客户端并显示消息。用户响应后,您应该开始“第二次”执行,具体取决于用户的输入。第二次执行应该通过调用另一个(新)服务来启动,该服务首先应该在请求用户输入之前加载或恢复保存的执行状态。