当前位置:  开发笔记 > 编程语言 > 正文

如果表单ASP.NET MVC出错,则重新显示输入详细信息

如何解决《如果表单ASP.NETMVC出错,则重新显示输入详细信息》经验,为你挑选了1个好方法。

我已经解决了这个问题2天了,这是一个容易出问题的问题,即使将其与其他有效的项目进行比较,我也无法看到代码中的错误.

你能帮忙吗?

我正在使用ASP.NET成员资格和使用ASP.NET MVC生成的帐户控制器类来处理我网站的帐户部分.

但是,当注册并且用户将某些字段留空时,输入的文本在重新显示页面时不会显示.

这是注册后发布行动

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Register(FormCollection formValues)
    {

        ViewData["PasswordLength"] = MembershipService.MinPasswordLength;

        if (ValidateRegistration(formValues))
        {

            // Attempt to register the user
            MembershipCreateStatus createStatus = MembershipService.CreateUser(formValues["username"], formValues["password"], formValues["email"]);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuth.SignIn(formValues["username"], false /* createPersistentCookie */);

                return RedirectToAction("CreateCustomer", "Account");
            }
            else
            {
                ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        return View();
    }

和ValidateRegistration功能

 private bool ValidateRegistration(FormCollection formValues)
    {
        if (String.IsNullOrEmpty(formValues["userName"]))
        {
            ModelState.AddModelError("username", "You must specify a username.");
        }
        if (String.IsNullOrEmpty(formValues["email"]))
        {
            ModelState.AddModelError("email", "You must specify an email address.");

        }
        if (formValues["password"] == null || formValues["password"].Length < MembershipService.MinPasswordLength)
        {
            ModelState.AddModelError("password",
                String.Format(CultureInfo.CurrentCulture,
                     "You must specify a password of {0} or more characters.",
                     MembershipService.MinPasswordLength));

        }
        if (!String.Equals(formValues["password"], formValues["confirmPassword"], StringComparison.Ordinal))
        {
            ModelState.AddModelError("_FORM", "The new password and confirmation password do not match.");
        }
        if (!String.Equals(formValues["email"], formValues["confirmEmail"], StringComparison.Ordinal))
        {
            ModelState.AddModelError("confirmEmail", "The email and confirmation email addresses do not match.");
        }
        return ModelState.IsValid;
    }

以防这里是Register视图

"%>

寄存器

创建一个新账户

使用下面的表单创建一个新帐户.

密码必须至少为<%= Html.Encode(ViewData ["PasswordLength"])%>个字符.


<%= Html.ValidationSummary()%>
<%using(Html.BeginForm()){%>用户名:<%= Html.TextBox("用户名")%>

                <%= Html.ValidationMessage("username") %>
            
            

            
            Email:
            <%= Html.TextBox("email") %>
                <%= Html.ValidationMessage("email") %>
            
            
            
            Confirm Email:
            
                <%= Html.TextBox("confirmEmail") %>
                <%= Html.ValidationMessage("confirmEmail") %>
            
            
            
            Password:
            
                <%= Html.Password("password") %>
                <%= Html.ValidationMessage("password") %>
            
            
            
            Confirm password:
            
                <%= Html.Password("confirmPassword") %>
                <%= Html.ValidationMessage("confirmPassword") %>
            
            
            

            
            
                
            
            
    
<% } %>



1> Programmin T..:

马上我猜测:

// If we got this far, something failed, redisplay form
return View();

关闭你的第一部分是杀了你.视图需要显示一些东西,而你却什么都不给它.我通过创建传入值的副本并通过View方法调用将其推回来处理此问题:

View(returnedValues);

其中ResetPageCreate是发送的原始值的副本(如果您必须更改某些信息,请在保存尝试之前更改信息).这样,View就可以使用模型,因此可以显示值.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有