3

リストを削除するかどうかを尋ねる Javascript ポップアップを作成したいと考えています。

現時点で私が持っているものは次のとおりです(機能しません-コントローラーにキャッチされたときにGuidはnullです)。

@Html.ActionLink("Delete", "Delete", "Listing", listing.Guid, new { onclick = "return confirm('Are you sure you want to delete this listing?')" })

最初の Delete は文字列、2 番目の Delete はメソッドの ActionName、Listing はコントローラー名、listing.Guid は送信するパラメーターで、最後にもちろん、onclick は Javascript です。

私がひどく間違っている可能性がある場所はありますか?

編集また、確認ダイアログ ボックスをよりきれいにする方法を教えてください。ブートストラップの使用。

4

1 に答える 1

9

匿名オブジェクトを使用してルート値を渡すことができます。

@Html.ActionLink(
    "Delete", 
    "Delete", 
    "Listing", 
    new { id = listing.Guid }, 
    new { onclick = "return confirm('Are you sure you want to delete this listing?')" }
)

およびそれぞれのコントローラー アクション:

public ActionResult Delete(Guid id)
{
    ...
}

はい、ActionLinks と GET リクエストを使用して、サーバーの状態を変更するアクション (何かを削除するなど) を呼び出すのは非常に悪い考えです。この場合、適切な HTTP 動詞 DELETE を使用する方がはるかに優れています。しかし、HTML フォームはこの動詞を普遍的にサポートしていないため、AJAX を使用するか、POST 動詞を使用できます。

@using (Html.BeginForm("Delete", "Listing", new { id = listing.Guid }, FormMethod.Post, new { onsubmit = "return confirm('Are you sure you want to delete this listing?');" }))
{
    @Html.HttpMethodOverride(HttpVerbs.Delete)
    <button type="submit">Delete</button>
}

およびそれぞれのコントローラー アクション:

[HttpDelete]
public ActionResult Delete(Guid id)
{
    ...
}
于 2012-09-18T11:46:26.597 に答える