2012-03-08 6 views
0

MVC 3のページには、部分ビューが2つあります.1つはItems in Bucket A、もう1つはItems in Bucket Bです(議論のために単純化されています...各バケットのレンダリングに重要なロジックがあり、そのロジックはバケット間で異なります)。1つのリンクで2つのAjax更新を呼び出すことはできますか?

Bucket AからBucket Bにアイテムを移動するためのリンクがあります。リンクをクリックすると、Items in Bucket AのパーシャルビューとItems in Bucket Bのパーシャルビューを更新する必要があります。

私はこのように、アヤックスを使用して、1つまたは他をリフレッシュすることができます

@Ajax.ActionLink("Move to B", "_BucketB", "Home", new { item = Model.Item }, 
new AjaxOptions() 
{ 
    UpdateTargetId = "divForBucketB", 
    HttpMethod = "Post", 
    InsertionMode = InsertionMode.Replace 
}) 

は、どのように私はActionLinkのをクリックしたときにもdivForBucketAをリフレッシュする問題にアプローチすることができますか?

UPDATE

適切なビューとコントローラを使用して生成されるようにdivForBucketAニーズに入るHTML。 div内容は、JavaScriptでクライアント上で処理するにはあまりにも重要であるの変更(おそらく別のAjax呼び出しを呼び出す以外...それが行うことができますか?)

+0

「AjaxOptions」を削除して、自分のajaxをjQueryでロールバックする方が良いと思います。そうすれば 'onclick = myfunction()'を実行することができます。myfunction()は2つのajax呼び出しを呼び出し、divを更新します。 – RPM1984

答えて

1

jQueryでこれを行う方法です。明らかに、Url.Action呼び出しを修正する必要があり、これはBucketAコントローラメソッドがPartialViewを返すと仮定します。

$(document).ready(function() { 
    $('#mybutton").click(function() { 
    $.get(@Url.Action("Index", "BucketA"), function (data) { 
     $('#bucketA').html(data); 
    }); 
    $.get(@Url.Action("Index", "BucketB"), function (data) { 
     $('#bucketB').html(data); 
    }); 

    e.preventDefault(); 
    }); 
}); 
+0

「Url.Action呼び出しを修正する」という意味を説明できますか? –

+0

@ Url.Action( "Index"、 "BucketA")< - PartialView()を返したIndexというメソッドを持つBucketAControllerというコントローラがある場合にのみ機能します。あなたは、@ Url.Action呼び出しに正しいパラメータを提供したいでしょう –

1

はあなたに応じて、(AjaxOptions OnCompleteまたはOnSuccessを使用することができますAjax呼び出しが(他のバケットの更新のような)追加の処理を実行した後に呼び出すJavascript関数を指定する必要があります。

+0

"Bucket A"のコンテンツは、適切なコントローラによって生成される必要があります...クライアント上のJavaScriptでこれを行うのは適切ではありません。それを明確にするために質問を更新します。 –

+0

この場合、リンクのonclickハンドラを追加して、2つのajax呼び出しを開始するjavascript関数を呼び出すことができます.1つは各divを更新します。 –

+0

上記のコメントは、Ajax.ActionLinkを削除して、それをonclickハンドラを設定する通常のリンクにすることを意味します。 –

関連する問題