2011-11-11 75 views
0

我正在使用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> 

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

这是怎么发生的?即使我拿出处理表单的所有代码,它仍然会在提交时清除。在网络上,困难的人是相反的 - 他们希望形式清楚时,他们不是。

为什么逆向会发生在我身上,我该如何解决?

+0

多数民众赞成在处理提交的表单将使它更容易诊断(特别是因为你不使用服务器控件)代码

更多信息。如果您需要,您可以使用Fiddler来验证http帖子是否包含您的表单数据。 –

+0

@KenHenderson我可以看到表单数据正在到达服务器。问题是,当页面刷新时,它会从用户的浏览器中清除它。即使我拿出所有表单处理代码,这仍然会发生。 – Oliver

+1

就我个人而言,我会与鲍比的回答下面。但正如约翰逊所暗示的,如果您不使用服务器控件,您需要负责在页面在服务器上完成处理之前填充发布的数据(如果您希望它显示的话)。 –

回答

2

在你的回答中,不清楚你为什么使用html输入。但是,如果你可以使用asp.net控件,我会推荐使用这个。

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

,而不是这个

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

用asp.net文本框控件视图状态将在文本框保留你的价值,你点击提交即使但是要保持在同一页上becasue验证错误的照顾。当你离开另一个页面并进入页面时,你将失去你的价值观。在视图状态这里http://msdn.microsoft.com/en-us/library/ms972976.aspx

0

该电子邮件没有“名称”属性是必要的阅读帖子。

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

您应该可以读取Request [“NameOfControl”]的值。

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

看完上面的评论:

你将不得不因为你不使用器WebControls与RUNAT =“服务器”使用JavaScript重新填充的控件,因为控件不是服务器端..,有没有ViewState,所以你需要手动重新填充值。