我有一个注册页面与以下字段电子邮件,确认电子邮件,密码和密码。
在“注册按钮”上,单击并将模型发送到服务器,模型将进行验证,如果该电子邮件已经注册,它将显示验证错误消息“用户已经存在。请使用不同的电子邮件ID登录或注册”。
当我们显示此验证错误消息时,我正在丢失“确认电子邮件”字段的值。因此,用户必须再次重新输入,我想避免这种情况。
这里,我的模型中没有confirm_Email字段。
即使在验证失败的情况下,仍然需要做一些特殊的事情来保持确认邮件的价值吗?
感谢你的回应。
这是我的密码:
<% using (Html.BeginForm()) {%>
<%= Html.ValidationSummary(false) %>
<fieldset>
<div class="cssform">
<p>
<%= Html.LabelFor(model => model.Email)%><em>*</em>
<%= Html.TextBoxFor(model => model.Email, new { @class = "required email" })%>
<%= Html.ValidationMessageFor(model => model.Email)%>
</p>
<p>
<%= Html.Label("Confirm email")%><em>*</em>
<%= Html.TextBox("confirm_email")%>
<%= Html.ValidationMessage("confirm_email") %>
</p>
<p>
<%= Html.Label("Password")%><em>*</em>
<%= Html.Password("Password", null, new { @class = "required" })%>
<%= Html.ValidationMessage("Password")%><br />
(Note: Password should be minimum 6 characters)
</p>
<p>
<%= Html.Label("Confirm Password")%><em>*</em>
<%= Html.Password("confirm_password")%>
<%= Html.ValidationMessage("confirm_password") %>
</p><hr />
<p>Note: Confirmation email will be sent to the email address listed above.</p>
</fieldset>
<% } %>发布于 2010-04-26 18:30:06
这是因为它没有使用你的模型。
您的所有其他字段都在使用TextBoxFor,而其中一个字段不是,所以它不会自动连接以来回发布、预填充您的模型。
如果您希望它具有这个值,您需要手动将它放回控件或将其添加到您的模型中,它将自动填充您的控制器,并且当您将模型传递回您的视图时,它将使用预先存在的值构建。
您还可以将它的值添加到ViewData中,其名称与控件的ID相同。
无论哪种方式,您都需要在控制器中获取值,然后将其传回视图,以便显示错误消息。如果您将它添加到您的模型中,那么它将自动为您完成。
这就是为什么有一个单独的视图模型来包装视图中的所有数据,而不仅仅是要保存到DB中的原因。你的观点不应该只反映你的数据库想要什么.
发布于 2010-04-26 18:34:02
由于您的模型上不存在该属性,所以可以将一个值添加到ModelState字典中,并在重新显示表单时自动显示该值。类似于:
ModelState.Add("confirm_email",Request.Form"confirm_email");
https://stackoverflow.com/questions/2715878
复制相似问题