私がやろうとしていること: 「適切な」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の他の方法があると確信していますが、私はちょうど私がこの時点で知っていることをやっています。
ありがとうございました... 実際には削除されません。私は彼らが必要ではないと思った。私はajax.actionlinkがjqueryを使うと思った。私が間違っている?私がpluralsightで正しく覚えていれば、私はK Scott Allenのビデオを見ていて、彼はajax.actionslinkを使っていたときにmicrosrosoft ajaxスクリプトを削除しました。私はこれでかなり初心者ですので、アクションリンクは特定のケースではMicrosoft ajaxスクリプトを使用し、それ以外の場合には使用しません。わからない:) – coding4fun
ありがとう、それは私のせいだった。それを必要としないところでは、マイクロソフトのajaxスクリプトが現れます。 jquery.unobtrusive-ajax.min.jsというページで、私が気付いていなかったスクリプトが1つ欠けていました。たぶん私の次の質問はおそらく、あなたがページからスクリプトが欠落しているときに、(動作していない)それを伝える良い方法があるとします。 – coding4fun
ahh cool、私は欠けているスクリプトだと感じました...ちょうど正しいものではありませんでした:)将来のユーザーに同じ問題がある場合に備えて正しいスクリプトを反映するように私の答えを更新しました。コメント。 – lomaxx