2016-03-26 7 views
-2

私はユーザーを更新したいが、投稿をクリックすると、このエラーが表示されます。このligneのEntityValidationErrors: Ligne 335:context.SaveChanges();EntityValidationErrorsを修正する方法

私は、ASP.NET MVCプロジェクトでEntity Frameworkのを使用しています:このコントローラーでは、この私の編集アクション

// 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> 
} 
+1

*漠然とした質問をすると、あいまいな答えが得られます。しかし、あなたが私たちに詳細や文脈を与えるならば、有用で関連性の高い答え*を提供し、約束をすることができます*チェックボックスをチェックして*を尋ねるとき、これらのヒントを念頭に置いていますか? –

+0

Gert Arnoldに返信してくれてありがとう、私は詳細を私の質問に更新する – Sarra

答えて

0

ソリューションUserName属性が必要です。ブロック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); 
    } 
関連する問題