暂停循环直到单击模态按钮

时间:2016-01-22 22:45:15

标签: 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 : 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;
        }
    }
}

但是Modal在循环结束后出现在屏幕上。我需要暂停循环,直到我输入文本框值。

任何可以帮助我吗?抱歉我的英语不好。

1 个答案:

答案 0 :(得分:2)

在ASP.Net中,你不能只是暂停服务器端代码,因为服务器端代码总是完全执行(从不部分执行),即使在ASP.Net中使用异步页面,服务器端也是{{1连接到浏览器但在单独的进程中执行。浏览器从不知道也不关心服务器端发生的事情,服务器端也不知道也不关心浏览器在做什么,never连接服务器端代码以您想要的方式浏览。

但是,当达到第一个索引= 4并发出模态弹出脚本时,你可以通过断开循环来模拟你想要的东西。然后你可以为用户做i = 5时做类似的事情已输入i = 4的值并且页面已回发。但是,需要在浏览器的请求中跟踪成功处理输入的so it's impossible值,这可以通过设置名为i的{​​{1}}变量在下面的代码中完成。字符串类型列表的集合。

因此,如果您使用此代码,工作流将:系统会提示用户在模式弹出窗口中输入i = 4的值,然后单击按钮ViewState时回发后,将提示用户在模态弹出窗口中输入i = 5的值。

HandledValues