6

アプリケーションにビュー「親」があります。@Html.BeginFormと送信ボタンを使用して親ビューのデータを保存しています。親ビュー内に1つの部分ビューもあります。部分ビューから(jQueryを使用して)ajaxメソッドを呼び出そうとしていますが、そのたびに親フォームのアクションメソッドにリダイレクトされます。

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 buttonAJAX

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

ただし、このコンテキストでは、より適切ではなくreturn false、標準を使用することもできます。buttonsubmit

于 2013-03-26T11:48:14.487 に答える
2

ajaxを呼び出した後に戻るfalse...onClientClick関数の最後に

または送信を次のように書き直します

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

次に、jquerybndでクリックイベントを次のように入力します

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

});

またはinputタイプをからsubmitに変更しますbutton

于 2013-03-26T11:46:49.463 に答える