带有确认对话框的MVC3 Actionlink

时间:2012-04-17 19:57:05

标签: asp.net-mvc-3 confirmation

我可以显示ActionLink的确认消息吗?

我需要使用javascript吗?没有它可能吗?

你能为我举一些例子吗?

谢谢。

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

4 个答案:

答案 0 :(得分:38)

使用重载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。

答案 1 :(得分:1)

编辑:不要使用这个答案,请使用Jim的另一个答案。

您无法使用ActionLink - 您必须编写一些JavaScript(例如列出的here)以弹出确认。您可以使用Url.Action生成javascript最终用于发布或获取端点的网址。

我的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>

答案 2 :(得分:0)

在我的情况下,我有一个已经调用动作的按钮:

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

在阅读Jim的回答后,我将其更改为以下内容:

<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 })'" />

它很有效! 谢谢Jim !!

答案 3 :(得分:0)

在 MVC Core 中,我使用了这个,但仍在 JavaScript 中

 <button type="submit"  
  asp-action="Delete" asp-route-id="@Model.Id"
  onclick="return confirm('Are you sure you want to delete?');">
  </button>