【发布时间】: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 啊,我明白了。我错误地认为默认行为是相反的 - 除非明确清除,否则在提交表单后将填充字段。