2012-04-17 21 views
13

Tôi có thể hiển thị thông báo xác nhận cho số ActionLink không?MVC3 Liên kết hành động với hộp thoại xác nhận

Tôi có cần sử dụng javascript không? Có thể không có nó?

Bạn có thể đưa ra một số ví dụ cho tôi không?

Cảm ơn bạn.

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

Trả lời

38

Sử dụng quá tải Html.ActionLink(string linkText, string actionName, string controllerName, object RouteValues, object HtmlAttributes) và một số javascript, bạn có thể làm như sau:

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

này sẽ thêm Thuộc tính HTML onclick, sẽ thực thi javascript được chỉ định khi liên kết được nhấp. Nếu sự kiện onclick trên một liên kết (hoặc nút gửi của biểu mẫu) trả về false, hành động (theo liên kết, đăng biểu mẫu) không xảy ra. Hàm confirm(message) hiển thị cho người dùng hộp thoại xác nhận với thông báo được chỉ định và trả về true hoặc false tùy thuộc vào phản hồi của người dùng.

+0

+1: Đây là những gì tôi sẽ làm quá –

+0

Cảm ơn bạn! Giải pháp dễ dàng! – wholee1

1

Sửa: không sử dụng câu trả lời này, sử dụng một trong những khác từ Jim.

Bạn sẽ không thể sử dụng ActionLink - bạn sẽ phải viết một số JavaScript (chẳng hạn như được liệt kê here) để bật lên xác nhận. Bạn có thể sử dụng Url.Action để tạo URL mà javascript cuối cùng sẽ sử dụng cho bài đăng hoặc nhận điểm cuối.

javascript của tôi là xấu, nhưng tôi nghĩ rằng điều này được các ý tưởng trên:

<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> 
+0

ActionLink vẫn có thể được sử dụng. Nó không thể tự mình xác nhận. – yoozer8

+0

Chà, không biết điều đó. Giải pháp tuyệt vời, +1 – eouw0o83hf

+0

Vâng, ActionLink có rất nhiều tình trạng quá tải (đôi khi nó có thể lộn xộn khi cố gắng sử dụng đúng). Vì RouteValues ​​và HtmlAttributes khá linh hoạt, bạn có thể làm khá một chút với ActionLink – yoozer8

0

Trong trường hợp của tôi, tôi đã có một nút mà đã gọi là một hành động:

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

Sau khi đọc câu trả lời của Jim, tôi đã thay đổi nó như sau:

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

Và nó hoạt động Greate! Cảm ơn Jim !!