PDA

View Full Version : انتقال مدل به کنترلر با ajax



resident
پنج شنبه 24 بهمن 1392, 14:44 عصر
سلام.
میخوام مدلم رو که لیستی از یه کلاس هست رو از Partial View به کنترلر (به روش ajax ای) بفرستم.
چطور باید این کار انجام بشه؟

ali_autumnal
پنج شنبه 24 بهمن 1392, 15:22 عصر
http://barnamenevis.org/showthread.php?440195-%D9%BE%D8%A7%D8%B3-%D8%AF%D8%A7%D8%AF%D9%86-%D9%85%D8%AF%D9%84-%D8%A7%D8%B2-%D9%88%DB%8C%D9%88-%D8%A8%D9%87-%D8%A7%DA%A9%D8%B4%D9%86-%D8%A8%D8%A7-%D8%A7%DA%98%D8%A7%DA%A9%D8%B3

resident
پنج شنبه 24 بهمن 1392, 16:15 عصر
http://barnamenevis.org/showthread.php?440195-%D9%BE%D8%A7%D8%B3-%D8%AF%D8%A7%D8%AF%D9%86-%D9%85%D8%AF%D9%84-%D8%A7%D8%B2-%D9%88%DB%8C%D9%88-%D8%A8%D9%87-%D8%A7%DA%A9%D8%B4%D9%86-%D8%A8%D8%A7-%D8%A7%DA%98%D8%A7%DA%A9%D8%B3

مرسی علی آقا...
روشهای دیگه ای هم برای این کار گفتن: مثل ارسال به روش json و یا serialize کردن داده ها.
بین روش شما و این 2 روش کدوم رو پیشنهاد می کنید؟

resident
جمعه 25 بهمن 1392, 15:48 عصر
طبق پست شما من این کار رو انجام دادم:

فرم من به اینصورته:

1. فرم ورود و ویرایش اطلاعات شخص

2. فرم ورود و ویرایش اطلاعات ماشین شخص به عنوان partial view داخل view ی شخص

حالا میخوام وقتی فرد خواست یه ماشین ثبت کنه، اطلاعات در لیست ماشین های فرد ثبت بشه و وقتی خواستیم کل فرم رو ثبت کنیم همه با هم ثبت بشه.

حالا من این تابع رو نوشتم برای زمانیکه خواستیم اطلاعات یه ماشین رو برای فرد ثبت کنیم.این اطلاعات ماشین رو باید بفرسته به کنترلر. اما در کنترلر null است.

<scripttype="text/javascript">
function AddCar() {

var url = '@Url.Action("AddCarToCollectionNRefreshList", "Person")';

var data = {
Car_Title: $('#Car_Title').val(),
Car_Car_CarTypeID: $('#Car_Car_CarTypeID').val(),
};
$.post(url, data, function (data) {

if (data == "true") {

}
});

}
</script>


اینم اکشنم در کنترلر:


[HttpPost]
[AllowAnonymous]
publicActionResult AddCarToCollectionNRefreshList(AddEditPersonModel personModel)
{
personModel.Cars.Add(personModel.Car);
return PartialView("_CarsList", personModel);
}


اینجا personModel.Carنال است. در ضمن personModelهم اصلا مقدار نگرفته.

اینم مدل هام:



public class AddEditPerson
{
public string LastName { get; set; }

public string FirstName { get; set; }

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

public Car Car { get; set; }
. . .
}


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

public int Car_CarTypeID{ get; set; }

. . .
}

به ویوی Person از مدل AddEditPerson و به Partial View ی ماشین ، مدل car پس داده شده.

ali_autumnal
جمعه 25 بهمن 1392, 16:46 عصر
فرقی نمی کنه. یکی از مزایای MVC همون سادگی کار کردن با زبان های اسکریپتی هستش. مونده شما با کدوم راحت باشی

ali_autumnal
جمعه 25 بهمن 1392, 16:48 عصر
در رابطه با null بودن مدل هنگام دریافت در Action: دلیل Null بودن دریافت نادرست هست. شما پارامتری از نوع Car ارسال کردید اما هنگام دریافت پارامتر شما از نوع AddEditPersonModel است!!!

resident
جمعه 25 بهمن 1392, 16:51 عصر
در رابطه با null بودن مدل هنگام دریافت در Action: دلیل Null بودن دریافت نادرست هست. شما پارامتری از نوع Car ارسال کردید اما هنگام دریافت پارامتر شما از نوع AddEditPersonModel است!!!
ببخشید اشتباه نوشتم.
مدلم در فرم ورود اطلاعات ماشین هم از نوع AddEditPersonModel است...
چون میخوام اطلاعات همین ماشین رو به AddEditPersonModel.Cars اضافه کنم باید به AddEditPersonModel در اکشن دسترسی داشته باشم.
در اکشن هم AddEditPersonModel و هم AddEditPersonModel.Car ناله.

ali_autumnal
جمعه 25 بهمن 1392, 17:32 عصر
در اکشن هم AddEditPersonModel و هم AddEditPersonModel.Car ناله.


باید هم null باشه شما مقادیر اون مدل هارو کامل ارسال نکرده اید. اگر به دیتای اون مدل ها نیاز دارید باید در اکشن فوق از دیتابیس بخونید!

resident
جمعه 25 بهمن 1392, 17:35 عصر
باید هم null باشه شما مقادیر اون مدل هارو کامل ارسال نکرده اید. اگر به دیتای اون مدل ها نیاز دارید باید در اکشن فوق از دیتابیس بخونید!
علی آقا مشکل اینجاست که در حال ورود اطلاعات فرد و ماشین هستیم. هنوز چیزی تو دیتابیس ذخیره نشده