先廢話一下
最近真的越寫MVC越上癮了
雖然因為很不熟一直卡
但是做出來的成就感特別好
有些東西做出來但是還是有些詳細的原理還需了解
終於做到需要開始CRUD了
首先針對會員資料做更動
最先遇到的是修改欄位後有些欄位不更新
找了兩篇相當好的文章
點我
點我
使用TryUpdateModel有10個多型能使用
重點再於第四個參數
為不更新的欄位名稱
沒輸入密碼時不更新>
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(int Id, AccountEdit Form)
{
if (ModelState.IsValid)
{
Account query = db.Account.Find(Id);
List list = new List();
// 沒打 是空時 時不更新
if (Form.Password == null || Form.Password.ToString().Equals(""))
{
list.Add("Password");
}
if (TryUpdateModel(query,"",null,list.ToArray()))
{
try
{
// 有打時 不是空 這段必需要寫在TryUpdateModel
if (Form.Password != null && !Form.Password.ToString().Equals(""))
{
query.Password = PublicFunction.EncodeStringMD5(Form.Password);
}
db.SaveChanges();
}
catch (Exception ex)
{
string e = ex.Message.ToString();
throw;
}
return RedirectToAction("Index");
}
return View(query);
}
return View(Form);
}
有個特別的地方就是要輸入時才更新密碼部份
原本寫在TryUpdateModel外面感謝保哥指導
"TryUpdateModel會蓋掉 model的資料"
"因為他在這時後才做 Model Binding"
所以要寫在TryUpdateModel裡面
參考網址
點我
點我
微軟官方