2012-08-06 5 views
0

면도기 뷰에서 ajax 양식을 제출하려고하는데 컨트롤러에서 JSON 객체를 반환하기를 원합니다. 내가 사용할 때 ("# form0"). submit (alert ("hi");); 데이터가 컨트롤러로 전송되고 경고 메시지가 나타납니다. 그러나, ("# form0")을 사용할 때. (function() {alert ("hi");}); 데이터가 전달되지 않고 경고 메시지가 표시되지 않습니다. 나는 이것이 내가 놓치고있는 나의 구문으로 사소한 것임을 느끼게된다.Ajax.BeginForm 제출 메소드를 오버로드 할 수 없습니다.

JQuery와 :

$(function() { 
//setting up the schedule modal dialoag. 
$("#schedModal").dialog({ 
    buttons: { 
     Submit: 
       function() { 
        $("#form0").ajaxSubmit(function() { 
         //this is where I want to put the magic, but I need the alert to fire first. 
         alert("hi"); 
         return false; 
        }); 
       }, 
     Cancel: 
       function() { 
        $(this).dialog("close"); 
       } 
    }, 
    autoOpen: false, 
    minHeight: 350, 
    modal: true, 
    resizable: false 
}); 

대상보기 :

@model FSDS.DataModels.Schedule 

@using (Ajax.BeginForm("scheduleNew", null, new AjaxOptions { UpdateTargetId = "partial" }, new {})) 
{ 
@Html.ValidationSummary(true) 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.ScheduleName) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.ScheduleName) 
     @Html.ValidationMessageFor(model => model.ScheduleName) 
    </div> 

    @* tons of other labels and editor fields go in here, omitted for brevity. *@ 
} 

컨트롤러, 즉 중요한 경우 :

[HttpPost] 
    public ActionResult scheduleNew(Schedule schedule) 
    { 
     if (Request.HttpMethod == "POST") 
     { 
      FSDSDBEntities context = new FSDSDBEntities(); 

      if (ModelState.IsValid) 
      { 
       context.Schedules.AddObject(schedule); 
       context.SaveChanges(); 
      } 

      return Json(schedule); 
     } 
     else 
     { 
      return PartialView(); 
     } 
    } 

답변

2

간단히 사용 $('#form0').submit(); :

여기에 관련 코드는

그런 다음 AJAX 요청이 성공하면 호출됩니다 AjaxForm에 OnSuccess 핸들러를 정의 :

@using (Ajax.BeginForm("scheduleNew", null, new AjaxOptions { OnSuccess = "success", UpdateTargetId = "partial" }, new {})) 

마지막 success 자바 스크립트 처리기 : 꿈 같은

function success(data) { 
    // the form was successfully submitted using an AJAX call. 
    // here you could test whether the data parameter 
    // represents a JSON object or a partial view 
    if (data.ScheduleName) { 
     // the controller action returned the schedule JSON object 
     // => act accordingly 
    } else { 
     // the controller action returned a partial view 
     // => act accordingly 
    } 
} 
+0

작품. 당신은 신사이고 학자 인 Darin Dimitrov입니다. – Billdr

관련 문제