0
ارسال فرم به Controller با استفاده از CheckBox
سلام خدمت دوستان، و اساتید ITPRO، من میخوام با استفاده از AJAX یک فرم ساده رو به کنترلر ارسال کنم، برای این کار داخل View کد های زیر نوشتم:
@using (Html.BeginForm("SubmitTotalReserve", "HotelSearch", new { area = "Hotels", Id = item.Id }, FormMethod.Post, new { enctype = "multipart/form-data", @class = "form-horizontal row-border", id = item.Id }))
{
<label class="dis-iblock">تعداد اتاق</label>
<select class="form-control" name="numberRoom" id="RoomNumber">
@for (int i = 0; i < 11; i++)
{
<option name="numberRoom" class="RNumber" value=@i>@i</option>
}
</select>
}
همچنین داخل فایل JS هم کدهای زیر ایجاد کردم:
$("#RoomNumber").on('change', function (event) {
debugger;
var form = $(event.target).parents('form');
var url = form.attr('action');
form.submit(function() {
$.ajax({
type: 'POST',
url: url,
data: $(this).serialize(),
dataType: 'json',
success: function (result) {
$(".reserv-box").html(result);
}
});
});
});
داخل Controller هم کدهای زیر ایجاد کردم:
[HttpPost]
public ActionResult SubmitTotalReserve(int numberRoom,long id)
{
Room dbenterty = Dbcontex.Rooms.Find(id);
if (Request.IsAjaxRequest())
{
dbenterty.NumberReserved = numberRoom;
Dbcontex.SaveChanges();
TempData["numberRoom"] = numberRoom;
return RedirectToAction("ShowTotalReserve", "HotelSearch", new {area = "Hotels"});
}
else
{
return RedirectToAction("HotelDetails", "HotelDetails", new {Id =dbenterty.Hotel.Id});
}
}
زمانی که برنامه رو دیباگ میکنم، داخل فایل JS به من آدرس Action مورد نظر بر میگردونه، اما بعد از اجرای کد، هیچ عکس العملی نشون نمیده و انگار اتفاق خاصی نیفتاده!
یعنی هیچ اکشنی، اجرا نمیشه!
نمیدونم مشکل کجاس.
ممنون.
1 پاسخ
0
سلام، اون قسمتی که data رو مشخص می کنی، باید به جای Serialize کردن this فرم رو Serialize کنی:
$("#RoomNumber").on('change', function (event) {
debugger;
var form = $(event.target).parents('form');
var url = form.attr('action');
form.submit(function() {
$.ajax({
type: 'POST',
url: url,
data: form.serialize(),
dataType: 'json',
success: function (result) {
$(".reserv-box").html(result);
}
});
});
});