2015-05-19 3 views
1

Я пытаюсь разработать веб-сайт, используя asp.net mvc 4 , где я хочу обновить запись и добавить новую запись в другую модель, используя значения из обновленных запись. Пока я могу обновить существующую запись, но я получаю ошибку в контроллере, когда система пытается добавить новую запись в другую модель. Ошибка:Обновить запись и добавить новую запись в другую модель, используя обновленные значения в asp.net mvc

Ссылка на объект не установлена ​​в экземпляр объекта.

Вот мои коды,

Контроллер

[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.

+2

возможный дубликат [Что такое NullReferenceException и как это исправить?] (Http://stackoverflow.com/questions/4660142/what-is- a-nullreferenceexception-and-how-do-i-fix-it) –

+0

Проверьте, не является ли «flatId.BillCheck» не null, если его значение null затем создает экземпляр «var addRentSchedule» с новым объектом «BillPayChecks» –

+0

Отлаживает код. Какова ценность 'addRentSchedule'? –

ответ

1

Это немного вопрос типа «устранить неисправность моего кода», поэтому получить точный ответ будет непросто. Однако, глядя на эту строку

var addRentSchedule = flatId.BillCheck; 

Заставляет меня думать, что вы получаете ссылку Null. Вы видите ошибку на строке сразу после этого, потому что вы пытаетесь установить свойства на нулевом объекте. Если график аренды представляет собой новую запись базы данных, то, скорее всего, вам нужно создать новый объект. Таким образом, ваш код, возможно, должен выглядеть примерно так:

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); 
+0

Да, ваше предположение верно. Мой db является новым, и создание нового объекта - это тот, который работает. Но просто хочу знать, безопасно ли я использовать новый объект каждый раз при добавлении записи в модель? –

+1

У вас будет несколько дочерних записей для определенного свойства, но это не вызовет проблем на уровне базы данных. Теперь, если в ваших спецификациях указано, что на одно свойство должно быть только один график аренды, тогда вам нужно будет проверить, существует ли он первым, если он не существует, а затем создать новый. Иначе измените существующий. Надеюсь, это поможет! – Tommy

+0

Tnx много для вашего отличного ответа! :) –

Смежные вопросы