2011-08-03 10 views
6

私がやろうとしていること: 「適切な」HTTP削除を使用してレコードを削除してみてください。Ajax.ActionLinkで適切なHTTP削除を行う際の問題

コントローラコード:

[HttpDelete] 
    public void DeleteRun(int RunId) 
    { 
     repository.RemoveEntry(RunId); 

    } 

カミソリビュー:

   @Ajax.ActionLink("Delete","DeleteRun",new {RunId = run.RunId}, 
         new AjaxOptions() { Confirm = "Are you sure you want to delete this entry?", 
              HttpMethod = "DELETE", 
              OnComplete = string.Format("DeleteRunInTable({0})",run.RunId) 

         }) 

Javascriptを(別のインクルードファイル内):

function DeleteRunInTable(RunId) { 
     $("tr[data-runid=" + RunId).remove(); 
} 

リンクActionLinkのメソッドが作成されます。

<a data-ajax="true" data-ajax-complete="DeleteRunInTable(11)" data-ajax-confirm="Are you sure you want to delete this entry?" data-ajax-method="DELETE" href="/Runs/Delete/11">Delete</a> 

javascriptの部分はまだ動作しているが、心配していないかどうかは不明です。一度に1つのステップを取ろうとしている:)。今は伝統的なタグのように動作し、リンクをクリックするとhrefのGETリクエストが行われます。もちろん、私はコントローラに置いた[HTTPDelete]のために404エラーが発生します。私はかなりWeb開発に新しいので、私は同じことを行うためにjavascriptまたはjqueryの他の方法があると確信していますが、私はちょうど私がこの時点で知っていることをやっています。

答えて

9

これは私が最近行ったことと同様に動作するはずです。私がしなければならないことは、AjaxOptions引数にHttpMethodを指定することでした。

また、jquery.unobtrusive-ajax.jsスクリプトがページに含まれていることを確認する必要があります。

+0

ありがとうございました... 実際には削除されません。私は彼らが必要ではないと思った。私はajax.actionlinkがjqueryを使うと思った。私が間違っている?私がpluralsightで正しく覚えていれば、私はK Scott Allenのビデオを見ていて、彼はajax.actionslinkを使っていたときにmicrosrosoft ajaxスクリプトを削除しました。私はこれでかなり初心者ですので、アクションリンクは特定のケースではMicrosoft ajaxスクリプトを使用し、それ以外の場合には使用しません。わからない:) – coding4fun

+0

ありがとう、それは私のせいだった。それを必要としないところでは、マイクロソフトのajaxスクリプトが現れます。 jquery.unobtrusive-ajax.min.jsというページで、私が気付いていなかったスクリプトが1つ欠けていました。たぶん私の次の質問はおそらく、あなたがページからスクリプトが欠落しているときに、(動作していない)それを伝える良い方法があるとします。 – coding4fun

+0

ahh cool、私は欠けているスクリプトだと感じました...ちょうど正しいものではありませんでした:)将来のユーザーに同じ問題がある場合に備えて正しいスクリプトを反映するように私の答えを更新しました。コメント。 – lomaxx

4

実際には単純な解決策でした....私はjquery.unobtrusive-ajax.min.js:Pが見つかりませんでした。私はここに投稿を残しているので、私がやっていることに似た何かをしようとする人は誰でも、jquery & jquery.unobtrusiveが含まれているかどうかを知ることができます。

編集:MVC3を使用している場合、ActionLinkはJQueryで動作します。それ以外の場合は、JavaScriptのライブラリを使用します。

関連する問題