2009-04-24 3 views
13

주문을 편집하는 데 사용되는보기가 있습니다 (예 : 주문). 광고 주문에는 임의로 추가 할 수있는 광고 항목이 있습니다. 그래서 메인 뷰와 중첩 된 partialviews.Html.BeginForm 내의 Ajax.BeginForm

각 부분은 각 개별 항목 또는 무엇이든의 양을 조정하는 아약스 양식이 있어야합니다. 따라서

:

Html.BeginForm() 
{%> 
    Ship to: blah blah blah 
    <% 
    Ajax.BeginForm("EditLineItem", "Order", new { OrderLineItemID = Model.ObjectID }, itemAjaxOptions)) 
    { 
     Item qty blah blah blah 

     <--! (ajax form's submit button, etc.)--> 
    } 
    %> 
    <--! (ajax form's submit button, etc.)--> 
<% 
} 

I는 다음과 같습니다 컨트롤러를 가지고 :

[ActionName("Edit")] 
[AcceptVerbs(HttpVerbs.Post)] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(int orderID) 
{ 
    blah, blah 
} 

[ActionName("EditLineItem")] 
[AcceptVerbs(HttpVerbs.Post)] 
[ValidateAntiForgeryToken] 
public ActionResult EditLineItem(Guid orderLineItemID) 
{ 
    blah, blah 
} 

내 문제는 내가 아약스 양식을 제출할 때, 나는 EditLineItem 방법 대신 편집 방법을 얻을 수 있다는 것입니다 . 두 경로가 매핑됩니다. "당신은 HTML 형식의 아약스 양식을 제출할 수 없습니다"와 같은 몇 가지 문제가 있습니까?

답변

12

전 똑같은 것을 시도했습니다. 내가 한 일에 상관없이, AJAX는 제출하지 않을 것입니다. 그래서 대답은 : 예, 당신은 AJAX 양식에 대한 제출 버튼을 일반 HTML 양식에 넣을 수 없다고 생각합니다.

하지만, 왜 당신은 부분을 제출이 가득을 제출와 합병 할 것이다? 이 간단한 방법은 JSON 요청을 jQuery와 함께 사용하는 것입니다. 예를 들어

, 당신이 드롭 다운리스트를 변경할 때 수량 범위의 텍스트를 업데이트 (ID = 주문) :

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('select#Order').change(function() { 
      $.getJSON('/Orders/UpdateQty/' + this.value, {}, 
       function(data) { 
        $('#qty').html(data); 
       }); 
     }); 
    }); 

</script> 

그리고 "주문"컨트롤러 코드 :

public class OrdersController : Controller 
{ 
    public ActionResult UpdateQty(int id) 
    { 
     return Json(yourLibrary.getQuantities(id)); 
    } 
} 

Link 힘 도움. 감사

편집 :

그래서 .. 링크가 더 이상 존재하지 않습니다. 하지만 인터넷 백백 컴퓨터 덕택에 우리는 this copy을 가지고 있습니다.

2

AFAIA AjaxForm은 여전히 ​​양식 태그로 렌더링되므로 양식을 중첩 할 수 있습니다. 양식은 중첩되지 않습니다.

나는 (나는 당신이 뭔가를 업데이트하는 등의 GET보다는 게시물을 구현하는 게 좋을 것 THO) 시스코 오른쪽 라인에 생각한다.

친절함에 대한 TP

관련 문제