Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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
C# “动态创建的内容正在更新”;“落后一步”;点击按钮_C#_Asp.net_Button_Insert Update - Fatal编程技术网

C# “动态创建的内容正在更新”;“落后一步”;点击按钮

C# “动态创建的内容正在更新”;“落后一步”;点击按钮,c#,asp.net,button,insert-update,C#,Asp.net,Button,Insert Update,因此,我创建了一个简单的问题/答案格式,在提交答案时遇到了问题。我通过“RenderQuestions()”函数从数据库中动态创建div/buttons/textbox。这将创建问题和答案文本框/按钮的列表。当我试图回答一个问题时,我键入我的答案,然后单击提交,结果什么也没有发生。我再做一次,它显示了我的第一个答案。这是“落后一步”。。如果我刷新它,它会显示所有应该显示的答案。我整晚都在为这件事挣扎。下面是一些代码: -----My page load----- (Relevant parts)

因此,我创建了一个简单的问题/答案格式,在提交答案时遇到了问题。我通过“RenderQuestions()”函数从数据库中动态创建div/buttons/textbox。这将创建问题和答案文本框/按钮的列表。当我试图回答一个问题时,我键入我的答案,然后单击提交,结果什么也没有发生。我再做一次,它显示了我的第一个答案。这是“落后一步”。。如果我刷新它,它会显示所有应该显示的答案。我整晚都在为这件事挣扎。下面是一些代码:

-----My page load----- (Relevant parts)

protected void Page_Load(object sender, EventArgs e) 
{
    //If authenticated hide login & show welcome bloc
    if (User.Identity.IsAuthenticated)
    {

        //Show question & render
        questionsBloc.Visible = true;
        //if(Page.IsPostBack)
        RenderQuestions();

    }

-----RenderQuestions() function---- (The relevant parts)

        //Initialize & get answers
        List<Answer> answers = new List<Answer>();
        answers = um.GetAnswers(q.QuestionID);

        //Initialize html render
        HtmlGenericControl questionDiv = new HtmlGenericControl("div");
        TextBox txtAnswer = new TextBox();
        Button btnAnswer = new Button();

        //Set Answer Button
        btnAnswer.Text = "Answer";
        btnAnswer.Click += new EventHandler(btnAnswer_Click);

        //Set ID's 
        btnAnswer.ID = "btnAnswer" + q.QuestionID.ToString();
        questionDiv.ID = "questionDiv" + q.QuestionID.ToString(); 

        //Set classes
        questionDiv.Attributes.Add("class", "questionBloc");
        btnAnswer.CausesValidation = false;
        btnAnswer.EnableViewState = false;
        //btnAnswer.UseSubmitBehavior = true;



        //Fill inner text with question
        questionDiv.InnerText = q.QuestionContent; //Insert question..
        //actionDiv.InnerText = "Like/Dislike/Comment/Flag"; //Insert answer..

        //Add answer textbox and button to action div
        actionDiv.Controls.Add(btnAnswer);

        //Add question div to qaDiv
        qaDiv.Controls.Add(questionDiv);


        //Add action div to qaDiv
        qaDiv.Controls.Add(actionDiv);

        //Add all controls to feedbloc
        feedBloc.Controls.Add(qaDiv);

-----My btnAnswer event handler -----

private void btnAnswer_Click(object sender, EventArgs e)
{

    UserManager um = new UserManager();

    um.PostAnswer("My first answer!");
    //RenderGlobalFeed();

}
----我的页面加载---(相关部分)
受保护的无效页面加载(对象发送方、事件参数e)
{
//如果经过身份验证,则隐藏登录并显示欢迎区
if(User.Identity.IsAuthenticated)
{
//显示问题并呈现
问题位置可见=正确;
//如果(第IsPostBack页)
RenderQuestions();
}
-----RenderQuestions()函数---(相关部分)
//初始化并获取答案
列表答案=新列表();
答案=um.GetAnswers(q.QuestionID);
//初始化html呈现
HtmlGenericControl问题div=新的HtmlGenericControl(“div”);
TextBox txtAnswer=新建TextBox();
按钮btnAnswer=新按钮();
//设置应答按钮
btnAnswer.Text=“答案”;
单击+=新建事件处理程序(单击);
//设置ID
btnAnswer.ID=“btnAnswer”+q.QuestionID.ToString();
questionDiv.ID=“questionDiv”+q.QuestionID.ToString();
//定级
添加(“类”、“问题组”);
btnAnswer.CausesValidation=false;
btnAnswer.EnableViewState=false;
//btnAnswer.UseSubmitBehavior=true;
//用问题填充内部文本
questionDiv.InnerText=q.QuestionContent;//插入问题。。
//actionDiv.InnerText=“喜欢/不喜欢/评论/标志”;//插入答案。。
//将应答文本框和按钮添加到操作div
actionDiv.Controls.Add(btnAnswer);
//将问题div添加到qaDiv
qaDiv.Controls.Add(questionDiv);
//将action div添加到qaDiv
qaDiv.Controls.Add(actionDiv);
//将所有控件添加到feedbloc
feedBloc.Controls.Add(qaDiv);
-----我的btnAnswer事件处理程序-----
私有无效Btnaswer_单击(对象发送者,事件参数e)
{
UserManager um=newusermanager();
邮递解答(“我的第一个答案!”);
//RenderGlobalFeed();
}
这是对我的按钮的所有引用。我应该在我的页面初始化btn点击事件吗?非常感谢任何帮助


谢谢各位,在btnAnswer上设置AutoPostBack=true。它不会触发服务器对按钮单击进行操作。

如果您想触发事件
btnAnswer\u单击
,则必须在每个页面加载中呈现相同的内容并分配事件处理程序(即,客户端按钮单击后的页面加载必须再次呈现该按钮,并且必须指定EventHandler)

如果Asp.net在页面加载中找不到控件,则不会触发该事件。请记住,单击按钮后,页面加载事件将首先触发,然后仅触发单击事件。

也必须在
btnAnswer\u Click
事件中调用
RenderQuestions()
这将避免后退问题


在这种情况下,我建议您了解asp.net中的ajax(使用jQuery库)请求(使用WebMethods或webservices)以避免这些回发。

如何在代码隐藏中做到这一点?将回发URL设置为重定向页面?它会触发事件..但它会先触发RenderQuestions()。我如何重新排序??