【问题标题】:Validation failed for one or more entities. Validations added in Model一个或多个实体的验证失败。模型中添加的验证
【发布时间】:2018-02-25 15:23:05
【问题描述】:

当我在 Register.cshtml 视图页面中按下表单中的注册按钮时,会出现此验证异常。

System.Data.Entity.Validation.DbEntityValidationException: '一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。'

@*Registration form*@
     <section class="registersection">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
                        <form action="~/Users/SaveRegister" method="post">
                            @using (Html.BeginForm())
                            {
                                @Html.ValidationSummary(true)

                                @Html.AntiForgeryToken()
                                <div class="editor-label">
                                    @Html.LabelFor(model => model.user_name)
                                </div>
                                <div class="editor-field">
                                    @Html.EditorFor(model => model.user_name)
                                    @Html.ValidationMessageFor(model => model.user_name)
                                </div>

                                <div class="editor-label">
                                    @Html.LabelFor(model => model.user_passport)
                                </div>
                                <div class="editor-field">
                                    @Html.EditorFor(model => model.user_passport)
                                    @Html.ValidationMessageFor(model => model.user_passport)
                                </div>
                                <p>
                                    <input type="submit" value="Register" />
                                </p>
                            }
                        </form>

                    </div>
                </div>
            </div>
      </section>

我的用户模型

@*Program.cs@* Model

public class User
        {   
            public int userid { get; set; }

            [Display(Name ="Passenger Name")]
            [Required(ErrorMessage ="Your name is required")]
            public string user_name { get; set; }

            [Display(Name = "Passenger Father Name")]
            [Required(ErrorMessage = "Your Father name is required")]
            public string user_fname { get; set; }

            [Required]
            [Display(Name = "CNIC")]
            [RegularExpression(@"^[0-9+]{5}-[0-9+]{7}-[0-9]{1}$", ErrorMessage = "Entered CNIC format is not valid.")]
           public string usercnic { get; set; }

            [StringLength(8, MinimumLength = 7)]
            public string user_passport { get; set; }
            [StringLength(15, MinimumLength = 10)]
            public string user_bloodGp { get; set; }
            [StringLength(35, MinimumLength = 30)]
            public string user_nationality { get; set; }
            public string usertype { get; set; }
            public string status { get; set; }
            [Required]
            [Range(0,8)]
            public int mobilenumber { get; set; }
            public string gender { get; set; }

        }

    public class BloggingContext : DbContext
    {
        public DbSet<Plane> Planes { get; set; }
        public DbSet<User>  Users { get; set; }
    }

我在 global.asax 中添加了这个 Database.SetInitializer(new DropCreateDatabaseIfModelChanges());

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
          Database.SetInitializer<AirlineappContext>(new DropCreateDatabaseIfModelChanges<AirlineappContext>());

        }

【问题讨论】:

    标签: c# asp.net-mvc validation ef-code-first registration


    【解决方案1】:

    用 try catch 块包围您的代码以捕获并记录 DbEntityValidationException,以便您获得有关错误的更多信息。

    public void AppendValidationErrors(Exception e)
    {
        DbEntityValidationException ex = e is DbEntityValidationException ?
            e as DbEntityValidationException : null ;
    
        if (ex == null) { log.Info(e); return; }
    
        foreach (var eve in ex.EntityValidationErrors)
        {
            log.Info(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                eve.Entry.Entity.GetType().Name, eve.Entry.State));
    
            foreach (var ve in eve.ValidationErrors)
            {
                log.Info(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                    ve.PropertyName, ve.ErrorMessage));
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      相关资源
      最近更新 更多