2012-07-05 4 views
1

나는 특정 Ajax 양식을 가지고 있으며, 제출하면 해당 Ajax 양식 외부에 다른 양식을 포함시키고 자한다. 내가 당신에게 예를 보여 드리죠 : 나는 형태로 외부의 다른 태그가MVC submit ajax.beginform 외부 양식

@using (Ajax.BeginForm("PayWithBankTransfer", "Payment", new { salesLineId = salesLine.SalesLineID }, new AjaxOptions 
                                { 
                                 HttpMethod = "POST", 
                                 UpdateTargetId = "bankForm", 
                                 LoadingElementId = "spinnerBank" 
                                }, new { id = "feedback-form" })) 
{ 
    //some stuff 
    <button type="submit">Reserve</button> 
} 

나는 아약스 양식 제출에 포함 할을 나는 아약스와 함께 다른 물건을 제출 수있는 방법

<div id="theOtherStuff"> 
    //otherStuff 
</div> 

형태?

답변

1

MS가 눈에 거슬리지 않는 AJAX가 이것을 지원한다고 생각하지 않습니다. 자 이제 일반 jQuery를 사용하여 제거하십시오. .serialize() 방법이 당신이 찾고있는 것입니다.

<div id="theOtherStuff"> 
    @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "theOtherStuffForm" })) 
    { 
     //otherStuff 
    } 
</div> 

과 :

그래서 우리는 우리가 우리의 스크립트에서 참조 할 수 있도록 우리는 다른 형태에 ID를 제공 정기적 Html.BeginForm

@using (Html.BeginForm(
    "PayWithBankTransfer", 
    "Payment", 
    new { salesLineId = salesLine.SalesLineID }, 
    FormMethod.Post, 
    new { id = "feedback-form" }) 
) 
{ 
    //some stuff 
    <button type="submit" class="t-button t-state-default" style="width: 100px; height: 50px;">Reserver</button> 
} 

으로 Ajax.BeginForm 양식을 대체하여 시작 남은 것은 별도의 자바 스크립트 파일에 스크립트를 작성하여 눈에 띄지 않게이 형식을 AJAXify하십시오.

$(function() { 
    $('#feedback-form').submit(function() { 
     $('#spinnerBank').show(); 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: $(this).add('#theOtherStuffForm').serialize(), 
      success: function (result) { 
       $('#bankForm').html(result); 
      }, 
      complete: function() { 
       $('#spinnerBank').hide(); 
      } 
     }); 

     return false; 
    }); 
}); 

다음 줄이 특히 관심의 대상이 될 수 있어야합니다

data: $(this).add('#theOtherStuffForm').serialize(), 

당신이 .serialize 방법은 적절한 직렬화 된 형식에 여러 형태로 변환 할 수 있습니다 볼 수 있듯이.

두 양식의 입력 요소와 충돌하는 이름을 사용해서는 안되며 (예 : 이름이 같은 두 개의 요소가있는 경우) 그렇지 않으면 기본 모델 바인더가 광포하게 바뀔 수 있습니다. 충돌이있을 경우이를 해결하는 것은 당신에게 달려 있습니다.

+0

@DarinDimitrov이 트릭을하는 것 같습니다 :) – gardarvalur

관련 문제