在asp.net mvc中使用更新值在另一个模型中更新记录和添加新记录

本文关键字:更新 新记录 添加 模型 另一个 asp net mvc | 更新日期: 2023-09-27 17:50:00

我正在尝试使用asp.net mvc 4 &在EF6中,我想更新记录并使用更新记录的值将新记录添加到另一个模型。到目前为止,我可以更新现有的记录,但当系统试图将新记录添加到另一个模型时,我在控制器中得到错误。错误是

对象引用未设置为对象的实例。

这是我的代码,

控制器

[HttpPost]
    public ActionResult RentController(FlatModel flatId)
    {
        if (Session["AdminNAME"] != null)
        {
            if (ModelState.IsValid)
            {
                var dbPost = rentdb.FlatInfoes.Where(p => p.flatno == flatId.Flats.flatno).FirstOrDefault();
                if (dbPost == null)
                {
                    return RedirectToAction("RentController");
                }
                dbPost.flat_owner_name = flatId.Flats.flat_owner_name;
                dbPost.flat_owner_phone = flatId.Flats.flat_owner_phone;
                var addRentSchedule = flatId.BillCheck;
                addRentSchedule.fullname = flatId.Flats.flat_owner_name;    //error showing in this line.
                addRentSchedule.isRented = "N";
                addRentSchedule.due = 10000;
                DateTime today = DateTime.Now;
                DateTime newDay = today.AddDays(30);
                addRentSchedule.submitTime = newDay;
                rentdb.BillPayChecks.Add(addRentSchedule);
                rentdb.SaveChanges();
                TempData["flat_assign_success"] = "Information Updated Successfully!";
                return RedirectToAction("RentController");
            }
            else
            {
                TempData["flat_assign_fail"] = "Error! Information update failed!";
                return RedirectToAction("RentController");
            }
        }
        else
        {
            return RedirectToAction("AdminLogin");
        }
    }

public class FlatModel
{
    public FlatInfo Flats { get; set; }
    public BillPayCheck BillCheck { get; set; }
}

我的代码做错了什么吗?在更新模型时,如何从更新的值添加记录?急需这种帮助。Tnx .

在asp.net mvc中使用更新值在另一个模型中更新记录和添加新记录

这是一个有点"排除我的代码故障"类型的问题,所以得到一个准确的答案将是困难的。但是,看看这一行

var addRentSchedule = flatId.BillCheck;

让我认为你得到一个空引用。你会在这行后面看到错误,因为你试图在一个空对象上设置属性。如果租金计划实际上是一个新的数据库记录,那么很可能需要创建一个新对象。因此,您的代码可能看起来像这样:

var addRentSchedule = new BillCheck();
//you need to tie this to the parent record using the parent record
//primary key and setting the BillCheck Foreign key appropriately
//since I dont know your db schema, I am guessing on this line.
addRentSchedule.flatId = flatId.Id;
addRentSchedule.fullname = flatId.Flats.flat_owner_name;
addRentSchedule.isRented = "N";
addRentSchedule.due = 10000;
//no point in creating variables when you can do it all in one line here.
addRentSchedule.submitTime = DateTime.Now.AddDays(30);
rentdb.BillPayChecks.Add(addRentSchedule);