PDA

View Full Version : حرفه ای: آپدیت مدل پاس داده شده در اکشن دیگری غیر از اکشن اصلی



resident
پنج شنبه 24 بهمن 1392, 18:39 عصر
سلام.
فرض کنید من یک ویو برای ورود و وبرایش اطلاعات شخص دارم.
داخل این ویو یه partial view دارم که لیست ماشینهای فرد رو نشون میده. در صورتیکه بخواهیم ماشین جدیدی برای این فرد ثبت کنبم، یه Partial View بالای لیست ماشینها نمایش داده میشه که بشه ماشین جدیدی رو ثبت کرد یا ویرایش کرد.
مدلهام به این صورت هستن:




public class Person
{

[Display(Name = “نام خانوادگی”)]
public string LastName { get; set; }

[Display(Name = “نام”)]
public string FirstName { get; set; }

public List<Car> Cars { get; set; }
. . .
}


public class Car
{
public string CarName { get; set; }

public int TypeID{ get; set; }

. . .
}


مدلی که به فرم اشخاص پاس داده میشه از نوع Person است. به Partial View ی نمایش لیست ماشینها، Person.Cars رو پاس دادم. , و مدل پاس داده شده به Partial View ی ورود ماشین جدید برای فرد از نوع Car است.وقتی کاربر دکمه ثبت اطلاعات ماشین رو میزنه اطلاعات ماشین ajaxای میره به کنترلر. تو کنترلر اطلاعات این ماشین باید اضافه بشه به لیست ماشینها.
تو کنترلر Action ام اینطوریه:




[HttpPost]
public ActionResult AddCarToCarsList(Car car)
{
entityPerson.Cars(car);
return PartialView("_CarsList", entityPerson.Cars);

}

اما خب طبیعیه که تو خط
entityPerson.Cars(car);


خطا میده . چون entityPerson در اکشن Create ساخته شده.
اومدم تو سازنده کنترلر یه شیء از Person ساختم .دیگه اون خط خطا نمیداد ولی هنگام ثبت کل اطلاعات Person، وقتی اطلاعات فرم میاد به اکشن Create، Cars خالیه.
در حقیقت یه جوری باید مدل پاس داده شده به View ی اصلی رو تو اکشن دیگری غیر از Create، آپدیت کنم.
چکار باید کنم؟ کسی می تونه کمک کنه؟

resident
جمعه 25 بهمن 1392, 12:40 عصر
دوستان اگه در این مورد کسی می تونه کمک کنه، حاضرم هزینشو پرداخت کنم. خیلی زمان براش گذاشتم ولی به نتیجه نرسیدم...
اگه کسی می تونه کمک کنه PM بده لطفا..

ali_autumnal
جمعه 25 بهمن 1392, 17:04 عصر
برای ذخیره Data و استفاده در یه Action دیگه از TempData استفاده میشه.
روش استفاده:


ذخیره کردن
TempData["CarEntity"]=car;

خواندن:

var car = (Car)TempData["CarEntity"];