【问题标题】:Validation failed for one or more entities. See 'EntityValidationErrors' property for more details source error db.SaveChanges();一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性源错误 db.SaveChanges();
【发布时间】:2018-01-10 15:58:23
【问题描述】:

首先,我首先使用来自数据库 MVC5 /C# 的实体框架代码。 我想添加新用户,但是当我尝试添加电子邮件时出现错误。

这是我的控制器方法:

      [HttpPost]
      public ActionResult InsertUser(Users users, string radioActive) 
    { 
            Users newuser = new Users();
            newuser.username = users.username;
            newuser.password = users.password;
            newuser.name = users.name;
            newuser.mail = users.mail;
            if (radioActive == "on") newuser.isActive = true;
            else newuser.isActive = false;

            db.Users.Add(newuser);
            db.SaveChanges();

      return Redirect(Url.Content("~/Administrate/"));
    }

问题是 db.SaveChanges();我不明白为什么,但我的所有值都返回良好,除了电子邮件。电子邮件返回 null,我收到了他的错误。

这也是我的看法:

      <div class="panel panel-primary">
            <div class="panel-heading text-center">KULLANICI EKLE</div>
            <div class="panel-body">
                <form data-toggle="validator" role="form" action="~/Administrate/InsertUser" method="post">
                    <div class="form-group">
                        <label for="username" class="control-label">Kullanıcı Adı</label>
                        <input type="text"  class="form-control" id="username" name="username"placeholder="Lütfen kullanıcı adını giriniz." required>
                    </div>
                    <div class="form-group">
                        <label for="password" class="control-label">Şifre</label>
                        <div class="form-inline row">
                            <div class="form-group col-sm-6">
                                <input type="password" name="password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}"  class="form-control" id="password" placeholder="Şifre" required>
                                <div class="help-block">Şifreniz ez bir sayı,bir büyük ve bir küçük harf içermeli ve minimum 6 karakterden oluşmalıdır.</div>
                            </div>
                            <div class="form-group col-sm-6">
                                <input type="password" class="form-control" name="passwordConfirm" id="passwordConfirm" data-match="#password" data-match-error="Şifreniz eşleşmiyor" placeholder="Şifre Tekrar" required>
                                <div class="help-block with-errors"></div>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="name" class="control-label">Çalışan Adı Soyadı</label>
                        <input type="text" class="form-control" name="name" id="name" placeholder="Lütfen adınızı ve soyadınızı giriniz." required>
                    </div>
                    <div class="form-group">
                        <label for="email" class="control-label">Email</label>
                        <input type="email" class="form-control" name="email" id="email" placeholder="Email" data-error="Email adresi geçerli değil." required/>
                        </div>

                    <div class="form-group">
                        <div class="radio">
                            <label>
                                <input type="radio"  id ="isActive" name="radioActive" required>
                                Aktif
                            </label>
                        </div>
                        <div class="radio">
                            <label>
                                <input type="radio" id="isActive" name="radioActive" required>
                                Pasif
                            </label>
                        </div>
                    </div>

                    <div class="form-group">
                        <label for="groupID" class="control-label">Grup Adı</label>
                        <select class="form-control" name="groupID" id="groupID" required>
                            <option selected disabled  >Lütfen Grubunuzu seçiniz</option>
                            @foreach (var item in ViewData["Gruplar"] as IList<WebApplication1.Models.Groups>)
                            {
                                <option value="@item.id">@item.groupName</option>
                            }
                        </select>
                    </div>
                            <div class="form-group">
                                <button type="submit" class="btn btn-primary">Kullanıcıyı Kaydet</button>
                            </div>
                </form>
            </div>
        </div>

我正在使用 MSSQL Server 17,并且我的表中电子邮件的数据类型是 varchar(50)。我该如何解决这个问题并返回电子邮件不为空。我是编码新手,也是 MVC5,所以如果你能帮助我,我非常感激。

【问题讨论】:

  • 从错误中检查内部异常部分,那里描述了出现问题。
  • 您在控制器中调用字段mail,但在您的视图中调用email。也许尝试在您的视图中删除e
  • 此外,这个输入标签似乎显示错字:&lt;input type="email" class="form-control" name="email" id="email" ... /&gt;。它应该与模型属性名称匹配:&lt;input type="email" class="form-control" name="mail" id="mail" ... /&gt;
  • 哦,谢谢你们俩的帮助。我不知道我怎么看不到那些错误。我有点尴尬。再次感谢你。 @oerkelens
  • 和@TetsuyaYamamoto

标签: c# sql-server html ef-code-first asp.net-mvc-5


【解决方案1】:

对于“EntityValidationErrors”: 您必须检查数据库表,表列的名称必须与视图元素名称完全相同(如果数据库表列“电子邮件”-> 视图电子邮件元素也必须是“电子邮件”)。 否则它将返回“EntityValidationErrors”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2011-12-09
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2013-05-13
    • 2014-02-24
    相关资源
    最近更新 更多