Chào các bác, Minh sử dụng code first tự động của Mvc 5 Entity Framework để render database lên model, chèn thêm thuộc tính mới Select… kiểu IEnumerable để dùng làm danh sách cho DropDownListFor:
public bool? UserOnline { get; set; }
public DateTime? UserLastOnline { get; set; }
public int? LevelNownId { get; set; }
public int? StarMark { get; set; }
public int? FgBeginId { get; set; }
public int? FgNownId { get; set; }
public int? FgEndId { get; set; }
public int? FgFutureId { get; set; }
public int? HeadIdBegin { get; set; }
public int? HeadIdNow { get; set; }
public virtual Fg Fg { get; set; }
public IEnumerable<SelectListItem> SelectFg { get; set; }
public virtual Fg Fg1 { get; set; }
public virtual Fg Fg2 { get; set; }
public virtual Fg Fg3 { get; set; }
public virtual Head Head { get; set; }
public virtual Head Head1 { get; set; }
public virtual Level Level { get; set; }
public IEnumerable<SelectListItem> SelectLevel { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Account> Account1 { get; set; }
public virtual Account Account2 { get; set; }
public virtual Bdh Bdh { get; set; }
public IEnumerable<SelectListItem> SelectBdh { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Account> Account11 { get; set; }
Bảng chính có các khoá phụ là Id của của bảng phụ, nên Minh dùng thuộc tính phụ khai báo thêm ở bảng thuộc tính bảng Select… để gán vào đó dữ liệu của bảng phụ dạng SelectList, nội dung hiển thị để chọn là Name, giá trị lẩy về là Id của Name tương ứng để truyền vào cho khoá phụ:
public ActionResult AddMember()
{
Db db = new Db();
Account obj = new Account();
obj.SelectBdh = new SelectList(db.Bdhs.ToList(), "BdhId", "BdhFullname");
obj.SelectFg = new SelectList(db.Fgs.ToList(), "FgId", "FgName");
obj.SelectLevel = new SelectList(db.Levels.ToList(), " LevelId", "LevelName");
return View(obj);
}
[HttpPost]
public ActionResult AddMember(Account obj)
{
Db db = new Db();
obj.UserCreateDate = DateTime.Now;
obj.UserDoor = true;
db.Accounts.Add(obj);
db.SaveChanges();
return View(obj);
}
Ở View sử dụng razo tạo DropDownListFor để lấy giá trị vào cho khoá phụ:
<p>
<label>Tên</label>
@Html.TextBoxFor(m=>m.UserFirstName)
</p>
<p>
<label>Fg begin</label>
@Html.DropDownListFor(m=>m.FgBeginId, Model.SelectFg)
</p>
<p>
<label>Fg End</label>
@Html.DropDownListFor(m=>m.FgEndId,Model.SelectFg)
</p>
<p>
<label> Fg Fututer</label>
@Html.DropDownListFor(m=>m.FgFutureId,Model.SelectFg)
</p>
<p>
<label>Số sao</label>
@Html.TextBoxFor(m=>m.StarMark)
</p>
<p>
<label> Level</label>
@Html.DropDownListFor(m=>m.LevelNownId,Model.SelectLevel)
</p>
<p>
<label>BDH tư vấn</label>
@Html.DropDownListFor(m=>m.UserAddId,Model.SelectBdh)
Ở View Page, khi nhập liệu xong chạy, dữ liệu được đẩy xuống database thành công, nhưng trang vẫn xoay vòng và báo lỗi khác kiểu dữ liệu : ví dụ báo kiểu dữ liệu của database được gán là Int32, kiểu dữ liệu truyền vào là 'IEnumerable ’
Tuy nhiên khi kiểm tra ở Database thì các dữ liệu đã được đẩy vào đầy đủ:
Minh thử dùng Int.parse để ép kiểu nhưng do một kiểu là dữ liệu đơn, một kiểu nó hiểu là mảng nên không cho ép 
Các anh chị em đi trước đã từng gặp vụ này hoặc biết cách khắc phục lỗi này vui lòng hướng dẫn mem mới như Minh với ạ. Trân trọng cảm ơn.
Chúc anh chị em ngày mới tràn đầy năng lượng!






83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?