首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC页面-如果验证失败,用于确认电子邮件字段的Viewstate将在注册页面上被删除

问ASP.NET MVC页面-如果验证失败,用于确认电子邮件字段的Viewstate将在注册页面上被删除
EN

Stack Overflow用户
提问于 2010-04-26 18:27:21
回答 2查看 542关注 0票数 2

我有一个注册页面与以下字段电子邮件,确认电子邮件,密码和密码。

在“注册按钮”上,单击并将模型发送到服务器,模型将进行验证,如果该电子邮件已经注册,它将显示验证错误消息“用户已经存在。请使用不同的电子邮件ID登录或注册”。

当我们显示此验证错误消息时,我正在丢失“确认电子邮件”字段的值。因此,用户必须再次重新输入,我想避免这种情况。

这里,我的模型中没有confirm_Email字段。

即使在验证失败的情况下,仍然需要做一些特殊的事情来保持确认邮件的价值吗?

感谢你的回应。

这是我的密码:

代码语言:javascript
复制
<% 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 />

​

​

代码语言:javascript
复制
        <p>Note: Confirmation email will be sent to the email address listed above.</p>
    </fieldset>

<% } %>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-26 18:30:06

这是因为它没有使用你的模型。

您的所有其他字段都在使用TextBoxFor,而其中一个字段不是,所以它不会自动连接以来回发布、预填充您的模型。

如果您希望它具有这个值,您需要手动将它放回控件或将其添加到您的模型中,它将自动填充您的控制器,并且当您将模型传递回您的视图时,它将使用预先存在的值构建。

您还可以将它的值添加到ViewData中,其名称与控件的ID相同。

无论哪种方式,您都需要在控制器中获取值,然后将其传回视图,以便显示错误消息。如果您将它添加到您的模型中,那么它将自动为您完成。

这就是为什么有一个单独的视图模型来包装视图中的所有数据,而不仅仅是要保存到DB中的原因。你的观点不应该只反映你的数据库想要什么.

票数 3
EN

Stack Overflow用户

发布于 2010-04-26 18:34:02

由于您的模型上不存在该属性,所以可以将一个值添加到ModelState字典中,并在重新显示表单时自动显示该值。类似于:

ModelState.Add("confirm_email",Request.Form"confirm_email");

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2715878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档