Asp.net mvc 值不能为null。参数名称:网格剑道中的items foreinkey

Asp.net mvc 值不能为null。参数名称:网格剑道中的items foreinkey,asp.net-mvc,null,foreign-keys,Asp.net Mvc,Null,Foreign Keys,创建/更新账户时,汇总后出现错误: 值不能为null。参数名称:列上的项。ForeignKey(p=>p.MaQuyen,(System.Collections.IEnumerable)ViewBag.Quyen,“MaQuyen”,“Quyen”)。标题(“Quyền“;” 我的控制器: public ActionResult AddAccout(string id) { TbNguoiDung User = new TbNguoiDung(); if(ModelState.IsVal

创建/更新账户时,汇总后出现错误:

值不能为null。参数名称:列上的项。ForeignKey(p=>p.MaQuyen,(System.Collections.IEnumerable)ViewBag.Quyen,“MaQuyen”,“Quyen”)。标题(“Quyền“;”

我的控制器:

public ActionResult AddAccout(string id)
{
  TbNguoiDung User = new TbNguoiDung();
  if(ModelState.IsValid)
  {
     if(id != null)
     {
       ViewBag.IDRequest = id;
       User = db.TbNguoiDungs.First(m => m.TenDangNhap == id);          
       ViewBag.Quyen = new SelectList(db.TbQuyens.ToList(), "MaQuyen", "Quyen", User.MaQuyen);
     }
     else
     {
       ViewBag.Quyen = new SelectList(db.TbQuyens.ToList(), "MaQuyen", "Quyen");
     }
   }

   if (!Request.IsAjaxRequest())
     return View(User);

   return PartialView(User);
}

[HttpPost]
public ActionResult AddAccout(TbNguoiDung item, string id)
{
  bool state = false;
  string mess = "";
  if(item != null)
  {
    if(id != null)
    {
      //foreach (var a in id)
      //{
      //    a
      //}
      item.TenDangNhap = Request.Form["UserName"].TrimEnd();
      item.MatKhau = DuLieuChung.MaHoaMD5(item.MatKhau);
      item.RandomPass ="1234zxcv";
      item.MaQuyen = item.MaQuyen;
      db.Entry(item).State = EntityState.Modified;
      SaveChanges(db);
      state = true;
      mess = "Thực hiện sửa thành công!";
    }
    else
    {
      var check = db.TbNguoiDungs.Where(m => m.TenDangNhap == item.TenDangNhap).FirstOrDefault().TenDangNhap;
      if (check == null)
      {
        item.MatKhau = DuLieuChung.MaHoaMD5(item.MatKhau);
        item.RandomPass = "1234zxcv";
        item.MaQuyen = item.MaQuyen;
        db.TbNguoiDungs.Add(item);
        SaveChanges(db);
        state = true;
        mess = "Thực hiện thêm thành công!";
      }                      
  }
  //mess = "Lỗi!";
  return View("ListAccout");
}
调试时,item.Quyen为1。I F5 Chrome after error=>网格更新
请帮帮我!谢谢

如果(ModelState.IsValid)是GET方法(您没有模型!),那么为什么要使用
if(ModelState.IsValid)
错误消息表明
ViewBag.Quyen
为空,您是否在返回视图时分配它。调试你的代码!嗨,斯蒂芬·穆克!非常感谢你!我添加了ViewBag.Quyen=db.TbQuyens.ToList();返回视图之前(“ListAccout”);=>成功了。
namespace TS2015.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;
    using System.Web.Script.Serialization;
    using System.Web.Security;

    [Table("TbNguoiDung")]
    public partial class TbNguoiDung
    {
        [Key]
        [StringLength(10,ErrorMessage="Độ dài tối đa tên đăng nhập là 10 ký tự.")]
        [Display(Name="Tên đăng nhập")]
        [Required(ErrorMessage="Bạn chưa nhập tên đăng nhập")]
        public string TenDangNhap { get; set; }

        [Required(ErrorMessage="Bạn chưa chọn Quyền")]
        public int MaQuyen { get; set; }

        [DataType(DataType.Password)]
        [StringLength(32, MinimumLength = 6, ErrorMessage = "Độ dài tối thiểu là 6 và độ dài tối đa là 32")]
        [Display(Name = "Mật khẩu")]
        [Required(ErrorMessage = "Bạn chưa nhập mật khẩu")]
        //[MembershipPassword()]
        public string MatKhau { get; set; }

        //[Compare("MatKhau", ErrorMessage="Xác nhận mật khẩu không khớp!")]
        //[DataType(DataType.Password)]
        //[StringLength(32, MinimumLength = 6, ErrorMessage="Độ dài tối thiểu là 6 và độ dài tối đa là 32")]
        //[Display(Name = "Xác nhận Mật khẩu")]
        //[Required(ErrorMessage = "Bạn chưa nhập xác nhận mật khẩu")]
        ////[MembershipPassword()]
        //public string XacNhanMatKhau { get; set; }

        [StringLength(50)]
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [Required]
        [StringLength(8)]
        public string RandomPass { get; set; }

        public KhoaTaiKhoan KhoaTaiKhoan { get; set; }

        [ScriptIgnore]
        public TbQuyen TbQuyen { get; set; }
    }
}
public ActionResult AddAccout(string id)
{
  TbNguoiDung User = new TbNguoiDung();
  if(ModelState.IsValid)
  {
     if(id != null)
     {
       ViewBag.IDRequest = id;
       User = db.TbNguoiDungs.First(m => m.TenDangNhap == id);          
       ViewBag.Quyen = new SelectList(db.TbQuyens.ToList(), "MaQuyen", "Quyen", User.MaQuyen);
     }
     else
     {
       ViewBag.Quyen = new SelectList(db.TbQuyens.ToList(), "MaQuyen", "Quyen");
     }
   }

   if (!Request.IsAjaxRequest())
     return View(User);

   return PartialView(User);
}

[HttpPost]
public ActionResult AddAccout(TbNguoiDung item, string id)
{
  bool state = false;
  string mess = "";
  if(item != null)
  {
    if(id != null)
    {
      //foreach (var a in id)
      //{
      //    a
      //}
      item.TenDangNhap = Request.Form["UserName"].TrimEnd();
      item.MatKhau = DuLieuChung.MaHoaMD5(item.MatKhau);
      item.RandomPass ="1234zxcv";
      item.MaQuyen = item.MaQuyen;
      db.Entry(item).State = EntityState.Modified;
      SaveChanges(db);
      state = true;
      mess = "Thực hiện sửa thành công!";
    }
    else
    {
      var check = db.TbNguoiDungs.Where(m => m.TenDangNhap == item.TenDangNhap).FirstOrDefault().TenDangNhap;
      if (check == null)
      {
        item.MatKhau = DuLieuChung.MaHoaMD5(item.MatKhau);
        item.RandomPass = "1234zxcv";
        item.MaQuyen = item.MaQuyen;
        db.TbNguoiDungs.Add(item);
        SaveChanges(db);
        state = true;
        mess = "Thực hiện thêm thành công!";
      }                      
  }
  //mess = "Lỗi!";
  return View("ListAccout");
}