为什么表单的值不更新?

时间:2018-04-25 02:33:26

标签: c# asp.net

我对asp比较新,但不确定为什么我的表单中的某些值不会更新。我有点讨厌修改MVC可能会做得更好的网址,我对建议持开放态度。

当这个页面加载时,它会正确地将input1和input2留空,因为url中没有条目。当我使用按钮提交它也没关系。当表单被更改并且再次单击该按钮时,输入1和1的值。 input2保持不变。这是为什么?

 public partial class Default : System.Web.UI.Page
    {
        int count = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["entry1"] != null && Request.QueryString["entry2"] != null)
            {
                input1.Value = Request.QueryString["entry1"];
                input2.Value = Request.QueryString["entry2"];
                CompareFSUI();
            }

        }

        protected void BtnClick(object sender, EventArgs e)
        {
            string url = Request.Url.AbsolutePath;
            if(count == 0)
            {
                count++;
                Response.Redirect(url + "?" + "entry1=" + input1.Value + "&entry2=" + input2.Value);
            } else {

                //the code makes it here the second button click)

                count++;

                 //but the values of input1 & input2, though changed by the user, go back to original submission of first button click (original url w/ entry's)
                Response.Redirect(url + "?" + "entry1=" + input1.Value + "&entry2=" + input2.Value);
            }
        }

        protected void CompareFSUI()
        {
            String lasx_guid = Guid.NewGuid().ToString();
            (continues to update parts of asp placeholder from here on)
<input type="text" name="Input 1" id="input1" runat="server" /> 
 <input type="text" name="Input 2" id="input2" runat="server" /> 
 <asp:Button ID="Fetch" class="btn btn-secondary" runat="server" Text="Compare" OnClick="BtnClick" />

2 个答案:

答案 0 :(得分:0)

if和else块中的代码是相同的。您基本上采用相同的值并再次重定向回相同的形式。这使得文本框具有相同的值

当前

初始阶段:没有价值观 设置值并单击按钮:使用输入值重定向到同一页面并再次将其检索回输入。

<强>正确 在pageLoad中,将值转换为变量,而不是将它们放回到文本框中。还应该在btnClick内部进行比较,而不是将用户重定向回具有相同值的同一页面。

伪代码如下: -

pageLoad
  if(!IsPostback) {
       // get from query string and populate textboxes.. Compare
       var entry1 = Request.QueryString["entry1"]; ...
       Compare()
  }

btnClick() {
   // get from textboxes 
   var entry1 = input1.Value; ....
   Compare();
}

答案 1 :(得分:0)

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString["entry1"] != null && Request.QueryString["entry2"] != null) { input1.Value = Request.QueryString["entry1"]; input2.Value = Request.QueryString["entry2"]; CompareFSUI(); } } }