繁体   English   中英

在mvc项目中插入错误:{“对象引用未设置为对象的实例。”}

[英]Insertion in mvc project error: {“Object reference not set to an instance of an object.”}

我在MVC中工作,我想保存详细信息..这里我有一个错误..控制器

public ActionResult Edit(FormCollection frm)
    {
        StaffDetails sdtl=new StaffDetails();
        int UnvId = int.Parse(TempData["UnvID1"].ToString());
        sdtl.UnvId = UnvId;
        //sdtl.UnvId = int.Parse(TempData["UnvID"].ToString());
        string SportsName = frm["SportsAffliation"];
        var SpotsID = Db.SportsCodes.Where(s => s.SportsName == SportsName).FirstOrDefault();
        sdtl.SportsID = SpotsID.SportsCodeID;
        sdtl.Name = frm["name"];
        sdtl.Address.Street = frm["street"];
        sdtl.Address.City = frm["city"];
        sdtl.Address.State = frm["state"];
        sdtl.Address.PostalCode = frm["zip"];
        sdtl.Address.Country = frm["country"];
        sdtl.Email = frm["Email"];
        sdtl.Phone = frm["Phone"];
        sdtl.SportsAffliation = frm["SportsAffliation"];
        Db.Entry(sdtl).State = System.Data.Entity.EntityState.Modified;
        Db.SaveChanges();
        //return RedirectToAction("Edit", new { id = cohid, tab = 0 });
        return View();
    }

 public class StaffDetails
    {
        [Key]
        public int StaffId { get; set; }
        public int UnvId { get; set; }
        public University University { get; set; }
        public int SportsID { get; set; }
        public SportsCode SportsCode { get; set; }
        public int SportsGroupId { get; set; }
        public SportsGroup SportsGroup { get; set; }
        public int CoachingStaffId { get; set; }
        public CoachingStaff CoachingStaff { get; set; }
        public string Name { get; set; }
        public string SportsAffliation { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public string OrganizationalLeader { get; set; }
        public Address Address { get; set; }
    }

从控制器的下面一行错误..仅来自sdtl.address的错误...

sdtl.Address.Street = frm["street"];
    sdtl.Address.City = frm["city"];
    sdtl.Address.State = frm["state"];
    sdtl.Address.PostalCode = frm["zip"];
    sdtl.Address.Country = frm["country"];

错误是{“对象引用未设置为对象的实例。”}

我认为这是一个逻辑问题,但由于我是mvc的新手而无法找到..你能解决这个问题吗

您可以在构造函数中新建地址对象:

public StaffDetails()
{
    Address = new Address();
}

或在控制器的“编辑”操作中添加新地址。

public ActionResult Edit(FormCollection frm)
{
    StaffDetails sdtl=new StaffDetails() { Address = new Address() };
    // Rest of code 
}

这种方式意味着您每次使用StaffDetails时都必须重新创建Address对象。

在您的类中添加一个构造函数并初始化Address属性:

public StaffDetails()
{
    Address = new Address();
}

我认为您应该为StaffDetails构造一个。 在构造函数中,您应该初始化诸如地址之类的对象。 我的意思是当您使用StaffDetails sdtl=new StaffDetails(); 此行将创建一个StaffDetails对象,但sdtl中的Address对象仍为null。

您应该从承包商StaffDetails中的Address创建新实例:

public class StaffDetails
{

    public StaffDetails()
    {
      this.Address = new Address();
    }

    [Key]
    public int StaffId { get; set; }
    public int UnvId { get; set; }
    public University University { get; set; }
    public int SportsID { get; set; }
    public SportsCode SportsCode { get; set; }
    public int SportsGroupId { get; set; }
    public SportsGroup SportsGroup { get; set; }
    public int CoachingStaffId { get; set; }
    public CoachingStaff CoachingStaff { get; set; }
    public string Name { get; set; }
    public string SportsAffliation { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string OrganizationalLeader { get; set; }
    public Address Address { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM