在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 .
这是一个有点"排除我的代码故障"类型的问题,所以得到一个准确的答案将是困难的。但是,看看这一行
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);