2013-03-26 62 views
6

我有一个视图'父'在我的应用程序,我使用@ Html.BeginForm &一个提交按钮来保存父视图的数据。我也有一个父视图内的部分视图,我试图从部分视图调用ajax方法(使用jQuery),但每次它将我重定向到父窗体的操作方法。按钮点击从部分视图重定向到父行动方法

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> 

每次我试图从局部视图调用/主页/ Test2的重定向我到/ home/Test1的(父窗体的动作)

回答

4

的问题是在这条线:

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

类型是submit因此提交表单并将您重定向到父级的操作。

在你的部分观点有规律button不是submit button请求AJAX内容:

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

你也return false但我相信使用标准button,而不是submit更适合在这种情况下。

2

返回false调用阿贾克斯后...在onClientClick功能的结束

OR重新撰写您提交的

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

和TH恩jQuery中BND click事件作为

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

}); 

input类型更改从submitbutton