C# 暂停循环,直到单击“模式”按钮
我需要在循环过程中手动输入一些值。我正在将C#ASP.Net与WebForms一起使用 我正在尝试这个:C# 暂停循环,直到单击“模式”按钮,c#,asp.net,webforms,C#,Asp.net,Webforms,我需要在循环过程中手动输入一些值。我正在将C#ASP.Net与WebForms一起使用 我正在尝试这个: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace systemII { public partial class MY_System :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace systemII
{
public partial class MY_System : System.Web.UI.Page
{
private List<String> List = new List<string>();
private bool loop = false;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
while (loop) { }
for (int i = 1; i <= 10; i++)
{
string a = "A" + i.ToString();
if (i == 4 || i == 5)
{
loop = true;
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
}
else
{
List.Add(a);
}
}
}
protected void Button2_Click(object sender, EventArgs e) // modal button
{
string b = "BB";
Lista.Add(b);
loop = false;
return;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
名称空间系统II
{
公共部分类MY_System:System.Web.UI.Page
{
私有列表=新列表();
私有布尔循环=假;
受保护的无效页面加载(对象发送方、事件参数e)
{
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
while(循环){}
对于(int i=1;i在ASP.Net中,您不能只是暂停服务器端代码,因为服务器端代码总是完全执行(从不部分执行)即使您在ASP.Net和ASP.Net中使用异步页面,服务器端也不会连接到浏览器,而是在一个单独的进程中执行。浏览器永远不知道也不关心服务器端发生了什么,服务器端也不知道也不关心浏览器在做什么,,因此不可能连接服务器端c以您想要的方式浏览ode
但是,当到达第一个索引=4并发出模式弹出脚本时,您可以通过中断循环来模拟您想要的内容。然后,当用户输入了i=4的值并且页面已发回时,您可以对i=5执行类似的操作。但是,成功处理输入的i
的值需要在re中跟踪从浏览器中执行任务,在下面的代码中通过设置名为HandledValues
的ViewState
变量来完成,该变量只是字符串类型列表的集合
因此,如果您使用此代码,工作流将是:系统将提示用户在模式弹出窗口中输入i=4的值,然后单击按钮Button1
并返回页面时,系统将提示用户在模式弹出窗口中输入i=5的值
protected void Button1_Click(object sender, EventArgs e)
{
//a list of values handled is stored in ViewState as ValuesHandled
List<string> handledValues = new List<string>();
if (ViewState["ValuesHandled"] != null) {
List<string> handledValues = (ViewState["ValuesHandled"] as List<string>;
}
for (int i = 1; i <= 10; i++)
{
string a = "A" + i.ToString();
//check if i = 4 has had its values input successfully
if (i == 4 && !handledValues.Contains(i.ToString()))
{
loop = true;
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
handledValues.Add(i.toString());
//break the loop since we need to return to browser for input by user
break;
}
else if (i == 4 && handledValues.Contains(i.ToString()))
{
//remove handled value if no modal popup needed to be opened
handledValues.Remove(i.ToString())
}
else if (i == 5 && !handledValues.Contains(i.ToString()))
{//check if i = 5 has had its values input successfully
loop = true;
handledValues.Add(i.toString());
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
//break the loop since we need to return to browser for input by user
break;
}
else if (i == 5 && handledValues.Contains(i.ToString()))
{
//remove handled value if no modal popup needed to be opened
handledValues.Remove(i.ToString())
}
else
{
List.Add(a);
}
}
//update the ViewState for ValuesHandled
ViewState["ValuesHandled"] = handledValues;
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
//处理的值列表作为ValuesHandle存储在ViewState中
List handledValues=新列表();
如果(ViewState[“ValueShandle”]!=null){
将handledValues=(ViewState[“ValuesHandled”]列为列表;
}
对于(int i=1;i,您当前正在运行同步代码)。考虑使用暂停和继续按钮。否则循环将首先完成,然后将您休息。我已经解决了我的问题与您的帮助!非常感谢: