2017-08-29 41 views
1

バインディングそれはProperyから除外されていてもNULL値を更新しているフィールドは、次のように私がモデルを持っている

public ActionResult MyProfile(int id) 
    { 
     var currentUser = _context.ApplicationUsers.Find(applicationuser.Id); 
     return View(currentUser); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult MyProfile([Bind(Exclude="Password")]ApplicationUser applicationuser) 
    { 
     if (ModelState.IsValid) 
     { 
      _context.Entry(applicationuser).State = EntityState.Modified; 
      _context.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(applicationuser); 
    } 

ここでPOSTメソッドは、FullNameのメールフィールドを正しく更新しています。しかし、それはパスワードフィールドにNULL値を更新しています。これを避ける方法は?

+0

はあなたが結合(申し訳ありませんが、と多くの作業を行っていないにパスワードを除外することを語っていないされる前にバインドattribute'll入れ、この行をあなたを助けません組み込みのモデルバインダー)。あなたはそれがヌルになるとは思わないでしょうか? –

+0

私は "パスワード"フィールドを更新したくない、私は初期値が常に存在したい。 –

+0

文字列のデフォルト値はNullです。モデルバインダーにPasswordプロパティを無視するように指示しているので、何も設定されません。 –

答えて

1

ここsavechanges()

db.Entry(model).Property(x => x.Password).IsModified = false

+1

これは素晴らしいです!私はこれを追加し、期待どおりに働いています。パスワードフィールドが更新されず、元の値が表示されます。 –

+0

@Shreekumar Sそれはあなたが歓迎するのにうれしい嬉しいです:) – Curiousdev

関連する問題