2013-03-26 8 views
6

Tôi có Chế độ xem 'Phụ huynh' trong đơn đăng ký của mình, tôi đang sử dụng @ Html.BeginForm & nút gửi để lưu dữ liệu chế độ xem Gốc. Tôi cũng có một phần xem bên trong Parent view, tôi đang cố gắng gọi phương thức ajax (sử dụng jQuery) từ một phần xem nhưng mỗi lần nó chuyển hướng tôi đến phương thức hành động của biểu mẫu cha.Nút bấm từ chuyển hướng xem từng phần sang Phương thức hành động gốc

Parent View 
@using (Html.BeginForm("Test1", "Home", new { id = 1 }, FormMethod.Get)) 
{ 
    @Html.Partial("TestPartial", Model) 
    <div> 
     <input id="Button1" type="submit" value="Parent" /> 
    </div> 
} 

Partial View 
<script> 
function onClientClick() { 
    $.ajax({ 
     url: "/Home/Test2", 
     type: "GET", 
     dataType: "json", 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify({ ID: 1 }), 
     cache: false, 
     success: function (data) { 
      alert('Success'); 
     }, 
     error: function (err, result) { 
      alert("Error" + err.responseText); 
     } 
    }); 
} 
</script> 
<div> 
<input type="submit" name="submit" onclick="onClientClick()" value="Submit" /> 
</div> 

Mỗi lần tôi đang cố gắng để gọi/Trang chủ/Test2 từ Nhìn ra một khoảng nó chuyển hướng tôi đến/Trang chủ/Test1 (Hành động của form cha)

Trả lời

4

Vấn đề là ở dòng này:

<input type="submit" name="submit" onclick="onClientClick()" value="Submit" /> 

Loại là submit do đó nó đang gửi biểu mẫu và chuyển hướng bạn đến Hành động trong phụ huynh.

Theo quan điểm của một phần của bạn có thường xuyên button không phải là một submit button yêu cầu AJAX nội dung:

<input type="button" onclick="onClientClick()" value="Ajax Call" /> 

Bạn cũng có thể return false Tuy nhiên tôi tin rằng bằng cách sử dụng tiêu chuẩn button hơn submit là phù hợp hơn trong bối cảnh này.

2

Return false sau khi gọi ajax ... tại cuối onClientClick chức năng

HOẶC Re-Viết của bạn nộp như

<input type="submit" name="submit" id="submit" value="Submit" /> 

và thứ en trong jquery BND sự kiện click như

$("submit").click(function(e){ 
e.preventDefault() 
$.ajax({ 
     url: "/Home/Test2", 
     type: "GET", 
. 
. 
. 

}); 

HOẶC Thay đổi kiểu input từ submit để button