2012-04-17 17 views
13

Czy mogę wyświetlić komunikat potwierdzający dla ActionLink?Łącze akcji MVC3 z oknem potwierdzenia

Czy muszę używać javascript? Czy to możliwe bez tego?

Czy możesz podać przykład dla mnie?

Dziękuję.

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

Odpowiedz

38

Korzystanie przeciążenie Html.ActionLink(string linkText, string actionName, string controllerName, object RouteValues, object HtmlAttributes) i niektóre javascript, można wykonać następujące czynności:

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

To doda Atrybut HTML onclick, który wykona określony javascript po kliknięciu łącza. Jeśli zdarzenie onclick na łączu (lub przycisk przesyłania formularza) zwraca wartość false, akcja (po kliknięciu linku, opublikowaniu formularza) nie ma miejsca. Funkcja confirm(message) pokazuje użytkownikowi okno dialogowe potwierdzenia z określonym komunikatem i zwraca wartość true lub false w zależności od odpowiedzi użytkownika.

+0

+1: To też bym zrobił –

+0

Dziękuję! Proste rozwiązanie! – wholee1

1

Edit: nie stosować tę odpowiedź, użyj drugi z Jimem.

Nie będziesz mógł używać ActionLink - będziesz musiał napisać trochę kodu JavaScript (takiego jak na liście here), aby wyświetlić potwierdzenie. Możesz użyć adresu Url.Action, aby wygenerować adres URL, który javascript ostatecznie użyje dla postu lub punktu końcowego.

Moje javascript jest zły, ale myślę, że to staje się pomysł poprzek:

<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

Z aplikacji ActionLink można nadal korzystać. Po prostu nie może sam dokonać potwierdzenia. – yoozer8

+0

Wow, nie wiedziałem tego. Niesamowite rozwiązanie, +1 – eouw0o83hf

+0

Tak, ActionLink ma masę przeciążeń (czasami może się bałagan próbować użyć właściwego). Ponieważ opcje RouteValues ​​i HtmlAttributes również są dość elastyczne, możesz zrobić całkiem sporo dzięki ActionLink – yoozer8

0

W moim przypadku miałem przycisk, który już zwaną akcję:

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

Po przeczytaniu odpowiedzi Jima, zmieniłem go na następujące kwestie:

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

I to działa greate! Dzięki Jim!