【问题标题】:Stop forms from clearing on submit阻止表单在提交时清除
【发布时间】:2011-11-11 21:31:50
【问题描述】:

我正在使用 asp.net,但只是使用常规形式而不是 runat="server" 形式。这是一个:

<form action="addUser.aspx" method="post">
    <fieldset>
        <label>Username</label>
        <input name="username" type="text" maxlength="50" />
        <span id="usernameInfo" class="fieldInfo" runat="server"></span>
    </fieldset>

    <fieldset>
        <label>Password</label>
        <input name="password" type="password" maxlength="50" />
        <span id="passwordInfo" class="fieldInfo" runat="server"></span>
    </fieldset>

    <fieldset>
        <label>Email</label>
        <input type="text" maxlength="50" />
        <span id="emailInfo" class="fieldInfo" runat="server"></span>
    </fieldset>

    <div class="buttonHolder">
        <button type="submit">Submit</button>
        <span id="generalInfo" runat="server"></span>
    </div>

</form>

提交表单并重新加载页面时,表单中的所有字段都是空的。这很烦人,因为我需要验证表单并通知用户用户名是否已经在用户中。

为什么会这样?即使我取出处理表单的所有代码,它仍然在提交时被清除。在网络上,人们遇到的困难恰恰相反——他们希望表单在没有被清除时被清除。

为什么我会出现相反的情况,我该如何解决?

【问题讨论】:

  • 处理提交表单的代码会使诊断更容易(尤其是因为您没有使用服务器控件)。如果需要,您可以使用 Fiddler 来验证 http 帖子是否包含您的表单数据。
  • @KenHenderson 我可以看到表单数据正在到达服务器。问题是当页面刷新时它会从用户的浏览器中清除。即使我取出所有表单处理代码,仍然会发生这种情况。
  • 就个人而言,我会在下面接受 Bobby 的回答。但是,正如 L Johnson 所暗示的,如果您不使用服务器控件,那么您有责任在页面完成服务器上的处理之前使用发布的数据填充它们(如果您希望它出现)。
  • @KenHenderson 啊,我明白了。我错误地认为默认行为是相反的 - 除非明确清除,否则在提交表单后将填充字段。

标签: asp.net html forms


【解决方案1】:

在您的回答中,不清楚您为什么使用 html 输入。但如果您可以使用 asp.net 控件,我建议您使用它。

<asp:TextBox id="textbox" runat="server" />

而不是这个

<input type="text" maxlength="50" />

使用 asp.net 文本框控件,即使在您单击提交后,viewstate 也会负责在文本框中保留您的值,但由于验证错误而留在同一页面上。当您移动到另一个页面并重新打开页面时,您将失去您的价值观。

这里有更多关于视图状态的信息http://msdn.microsoft.com/en-us/library/ms972976.aspx

【讨论】:

    【解决方案2】:

    电子邮件的“姓名”属性是阅读帖子所必需的。

    您没有提供任何代码来显示您如何尝试读取值,我假设您正在尝试在后面的代码中读取这些值。

    您应该能够将值读取为 Request["NameOfControl"]。

    您是否在页面加载时设置值,这可能会覆盖输入的值?

    阅读以上评论:

    您必须使用 javascript 重新填充控件,因为控件不是服务器端的。由于您没有使用带有 runat="server" 的 web 控件,因此没有 ViewState,因此您需要重新填充手动设置值。

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 1970-01-01
      • 2014-04-15
      • 2016-11-08
      • 2013-10-26
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多