2012-02-24 6 views
0

ajax actionlinkを使用して、ユーザがmodel (database table)のレコードを削除できるようにしています。
ユーザーclicksdelete link
JQuery dialogが開き、確認を求めます。
ユーザが削除したいことを確認し、actionlinkはコントローラの関連メソッドを呼び出します。
メソッドは、データベース内の関連するレコードを削除しようとしましたが、失敗しました。たとえば、何らかの理由でデータベースがダウンしています。
私はページ上の要素を更新していないので(onSuccessが起動すると思われますか?)、レコードが削除されていないことをどのように伝えることができますか?
実際には、メソッドの戻り値をAjax ActionLinkに渡す方法、またはonFailureを強制的に起動する方法を尋ねています。
私は、フィールドを非表示にしてUpdateTargetIdを使用して更新してから、値を確認するために関数onSuccessを呼び出すことができますが、これが最善の方法ですか?あなたはAjaxOptionsにONSUCCESSとONFAILUREプロパティを使用することができますmvc3 ajax.actionlinkモデルのエラーのコード

+0

が鳴ります。 – Mathletics

答えて

1

:これはMSのAjaxツールを使用するよりも、純粋なjQueryの中で行うことがより簡単かもしれないよう

<p> 
@Ajax.ActionLink("Click Me", "About", new AjaxOptions { OnFailure = "OnFailureFunc", OnSuccess = "OnSuccessFunc" }) 
</p> 

<script type="text/javascript"> 
    function OnFailureFunc() { 
     alert("Error"); 
    } 
    function OnSuccessFunc() { 
     alert("Success"); 
    } 
</script> 
+0

私は 'Ajax.ActionLink'の使用を奨励していません(jQuery.ajaxの方が好きなので好きですが)、このレスポンスを少し詳しく説明するために、サーバーが200の範囲外に応答するときにOnFailure *が呼び出されます: http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxoptions.onfailure.aspx –

+0

@David私はページを更新したくないので、常に成功を返します - JQuery ajaxのように見えますが、そうでなければ、私はUpdateTagetIdに行って、隠しフィールドルートの値をチェックしなければなりませんか? – user1079925

+0

コードがサーバー上で実行されている間にajax呼び出しがエラーをスローすると、応答は200にならないはずです。 'AjaxOptions.OnFailure'プロパティの全体点は、クライアント関数がエラーを処理できるようにすることです。サーバーが実際に*データベースをダウンさせるなどのエラーを投げた場合、200で応答するのは奇妙なようです。 –

関連する問題