web-dev-qa-db-ja.com

確認ダイアログ付きのMVC3アクションリンク

ActionLinkの確認メッセージを表示できますか?

Javascriptを使用する必要がありますか?それなしで可能ですか?

例を挙げていただけますか?

ありがとうございました。

//I want to make a confirmation message appear before the link opens.
@Html.ActionLink("Checkout and view order list", "Order", "Order")
13
wholee1

オーバーロードHtml.ActionLink(string linkText, string actionName, string controllerName, object RouteValues, object HtmlAttributes)といくつかのjavascriptを使用して、次のことができます。

_@Html.ActionLink("Checkout and view order list", "Order", "Order", null, new { onclick="return confirm('Are you sure you want to click this link?')" })
_

これにより、HTML属性onclickが追加され、リンクがクリックされたときに指定されたjavascriptが実行されます。リンク(またはフォームの送信ボタン)のonclickイベントがfalseを返した場合、アクション(リンクをたどる、フォームを投稿する)は発生しません。 confirm(message)関数は、指定されたメッセージを含む確認ダイアログをユーザーに表示し、ユーザーの応答に応じてtrueまたはfalseのいずれかを返します。

38
yoozer8

編集:この回答は使用せず、ジムの他の回答を使用してください。

ActionLinkを使用することはできません-確認をポップアップするには、JavaScript(リストされているものなど ここ )を作成する必要があります。 Url.Actionを使用して、JavaScriptが最終的に投稿または取得エンドポイントに使用するURLを生成できます。

私のJavaScriptは悪いですが、これでアイデアが伝わると思います。

<a href="javascript:confirmation();">Checkout and view order list</a>

<script>
function confirmation() {
 var answer = confirm("Confirm?")
 if(answer) {
  // Do something here, post or get
  window.location = @Url.Action("Order", "Order");
 }
}
</script>
1
eouw0o83hf

私の場合、すでにアクションを呼び出しているボタンがありました。

<input id="ButtonDelete" type="button" value="Delete Experiment" class="big-nevigation-button" onclick="location.href='@Url.Action("DeleteExperiment", "Experiment", new { experimentId = Model.ExperimentId })'" />

ジムの答えを読んだ後、私はそれを次のように変更しました。

<input id="ButtonDelete" type="button" value="Delete Experiment" class="big-nevigation-button" onclick="if (confirm('Are you sure you want to delete experiment???')) location.href='@Url.Action("DeleteExperiment", "Experiment", new { experimentId = Model.ExperimentId })'" />

そしてそれは素晴らしい働きをします!ありがとうジム!

0
Asaf