Asp.net mvc 如何修复EntityValidationErrors

Asp.net mvc 如何修复EntityValidationErrors,asp.net-mvc,entity-framework,visual-studio,Asp.net Mvc,Entity Framework,Visual Studio,我想更新用户,但当我单击“提交”时,会出现以下错误:此队列中的EntityValidationErrors: ligne335:context.SaveChanges() 我正在ASP.NET MVC项目中使用实体框架: 这是我在控制器中的编辑操作: // GET: ApplicationUsers/Edit/2 : [AuthLog(Roles = "Super Administrateur")] public ActionResult Edit(string id)

我想更新用户,但当我单击“提交”时,会出现以下错误:此队列中的EntityValidationErrors: ligne335:context.SaveChanges()

我正在ASP.NET MVC项目中使用实体框架:

这是我在控制器中的编辑操作:

// GET: ApplicationUsers/Edit/2 : 
     [AuthLog(Roles = "Super Administrateur")]
    public ActionResult Edit(string id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        ApplicationUser user = context.Users.Find(id);
        if (user == null)
        {
            return HttpNotFound();
        }
        return View(user);
    }

    // POST: ApplicationUsers/Edit/2 
    [AuthLog(Roles = "Super Administrateur")]
    [HttpPost, ValidateInput(false), ActionName("Edit")]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "Id,No_,RaisonSociale,Magasin,RemiseHabituelle,FamilyName,FirstName,EmailSup,Login,AffPrix,PasserCmd,EmailRespMagasin,Admin,BoursePR,Actif,IdSession,VendeurItirénant,ChargeClient,ValidOuAnnul,Email,EmailConfirmed,PasswordHash,SecurityStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,LockoutEndDateUtc,LockoutEnabled,AccessFailedCount,UserName")] ApplicationUser applicationUser)
    {
        if (ModelState.IsValid)
        {
            context.Entry(applicationUser).State = EntityState.Modified;
            context.SaveChanges();
            return RedirectToAction("ListUsers","Account");
        }
        return View(applicationUser);
    }
这是编辑视图:

    <div class="form-horizontal">

        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.Id)

        <div class="form-group">
            @Html.LabelFor(model => model.Login, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Login, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Login, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Enregistrer" class="btn btn-default" />
            </div>
        </div>
    </div>
}


@Html.ValidationSummary(true,“,new{@class=“text danger”}) @Html.HiddenFor(model=>model.Id) @LabelFor(model=>model.Login,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Login,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.Login,“,new{@class=“text danger”}) }
解决方案是:用户名属性是必需的。我通过在编辑操作中添加块try{}catch{}来发现此错误:

  public ActionResult Edit([Bind(Include = "Id,No_,RaisonSociale,Magasin,RemiseHabituelle,FamilyName,FirstName,EmailSup,Login,AffPrix,PasserCmd,EmailRespMagasin,Admin,BoursePR,Actif,IdSession,VendeurItirénant,ChargeClient,ValidOuAnnul,Email,EmailConfirmed,PasswordHash,SecurityStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,LockoutEndDateUtc,LockoutEnabled,AccessFailedCount,UserName")] ApplicationUser applicationUser)
    {
        if (ModelState.IsValid)
        {
            context.Entry(applicationUser).State = EntityState.Modified;

            try
            {
                context.SaveChanges();
            }
             catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
          {
             Exception raise = dbEx;
              foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                  foreach (var validationError in validationErrors.ValidationErrors)
                  {   string message = string.Format("{0}:{1}",
                          validationErrors.Entry.Entity.ToString(),
                         validationError.ErrorMessage);
                      // raise a new exception nesting
                      // the current instance as InnerException
                      raise = new InvalidOperationException(message, raise);
                  }
            }
              throw raise;
         }
            return RedirectToAction("ListUsers","Account");
        }
        return View(applicationUser);
    }

记住,如果你问一个模糊的问题,你会得到一个模糊的答案。但是,如果你给我们提供详细信息和背景,我们可以提供一个有用的、相关的答案,并承诺我会在询问时通过勾选复选框记住这些提示?谢谢你回答我Gert Arnold,我会用更多细节更新我的问题