6

我的应用程序中有一个 View 'Parent',我正在使用 @Html.BeginForm 和一个提交按钮来保存 Parent view 的数据。我在父视图中也有一个局部视图,我试图从局部视图调用 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>

每次我尝试从部分视图调用 /Home/Test2 时,它都会将我重定向到 /Home/Test1(父表单的操作)

4

2 回答 2

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更适合这种情况。

于 2013-03-26T11:48:14.487 回答
2

调用ajax后返回false...在onClientClick函数结束时

将您的提交重写为

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

然后在 jquery bnd 中单击事件为

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

});

input将类型从更改submitbutton

于 2013-03-26T11:46:49.463 回答