ajax actionlink
を使用して、ユーザがmodel (database table)
のレコードを削除できるようにしています。
ユーザーclicks
delete link
、
JQuery dialog
が開き、確認を求めます。
ユーザが削除したいことを確認し、actionlinkはコントローラの関連メソッドを呼び出します。
メソッドは、データベース内の関連するレコードを削除しようとしましたが、失敗しました。たとえば、何らかの理由でデータベースがダウンしています。
私はページ上の要素を更新していないので(onSuccessが起動すると思われますか?)、レコードが削除されていないことをどのように伝えることができますか?
実際には、メソッドの戻り値をAjax ActionLinkに渡す方法、またはonFailure
を強制的に起動する方法を尋ねています。
私は、フィールドを非表示にしてUpdateTargetId
を使用して更新してから、値を確認するために関数onSuccess
を呼び出すことができますが、これが最善の方法ですか?あなたはAjaxOptionsにONSUCCESSとONFAILUREプロパティを使用することができますmvc3 ajax.actionlinkモデルのエラーのコード
答えて
:これは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>
私は 'Ajax.ActionLink'の使用を奨励していません(jQuery.ajaxの方が好きなので好きですが)、このレスポンスを少し詳しく説明するために、サーバーが200の範囲外に応答するときにOnFailure *が呼び出されます: http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxoptions.onfailure.aspx –
@David私はページを更新したくないので、常に成功を返します - JQuery ajaxのように見えますが、そうでなければ、私はUpdateTagetIdに行って、隠しフィールドルートの値をチェックしなければなりませんか? – user1079925
コードがサーバー上で実行されている間にajax呼び出しがエラーをスローすると、応答は200にならないはずです。 'AjaxOptions.OnFailure'プロパティの全体点は、クライアント関数がエラーを処理できるようにすることです。サーバーが実際に*データベースをダウンさせるなどのエラーを投げた場合、200で応答するのは奇妙なようです。 –
が鳴ります。 – Mathletics