2016-03-31 6 views
-3

Unten finden Sie den Code in der Steuerung:Wie fügt man vor dem Löschen von Daten in .net MVC 4 eine Jaquery Ja/Nein-Warnung ein?

public ActionResult DeleteConfirmed(int id) 
{ 
    MovieCategory categoryToDelete = db.MovieCategories.Find(id); 

    var movies = db.Movies 
      .Where(m => m.MovieCategory.Id == id); 

     if (movies != null) 
     { 
       foreach (var movie in movies) 
       { 
        db.Movies.Remove(movie); 
       } 
     } 
     db.MovieCategory.Remove(categoryToDelete); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
} 

In diesem Moment seine nur der Benutzer die Kategorie Löschen ausgewählt und alle Filme, die zu dieser Kategorie gehören. Wie warne ich den Benutzer, dass noch immer Daten zu dieser Kategorie gehören, die ihn entscheiden lassen, ob er fortfahren möchte oder nicht?

+0

Wenn Sie den Controllercode ausführen, interagieren Sie nicht direkt mit dem Benutzer. Sie müssten sie auf eine andere Seite umleiten, die die Informationen enthält, die Sie ihnen geben möchten –

Antwort

0

Wenn Sie eine JavaScript-Warnung hinzufügen möchten, müssen Sie dies in JavaScript auf der Clientseite tun, wenn der Benutzer auf die Schaltfläche zum Löschen klickt. Es hat nichts mit dem serverseitigen C# -Code zu tun.

0

Sie können den Benutzer während der Ausführung einer Aktion nicht fragen. So funktioniert eine Webanwendung nicht.

Wenn Sie möchten, dass der Benutzer vor dem Löschen eine Entscheidung trifft, müssen Sie von der Aktion mit einer Seite zurückkehren, die die Frage stellt. Von dort aus müssen Sie eine neue Aktion erstellen, die basierend auf der Entscheidung des Benutzers einfach gelöscht wird. Das Ja/Nein-Feld muss diese neue Aktion aufrufen.

0

Der Weg, den ich in der Vergangenheit behandelt habe, besteht darin, die Daten selbst zu veröffentlichen, da die Bestätigung auf der Client-Seite geschehen muss.

Nehmen wir an, Sie haben die folgenden Link, um Ihre HTML definiert <a href="#" id="delete-link">Delete</a>

Sie könnten dann Folgendes definieren:
Hinweis: Dieses verwendet Razor-Syntax und übernimmt der Controller „MoviesController“ genannt wird, und Ihre Löschaktion ist „löschen“

$("#delete-link").click(function() { 
    var confirmed = confirm("Are you sure?"); 

    if (confiremd) { 
     // Post your form data to your controller action 
     $.post('@Url.Action("Delete", "Movies")', idToDelete, function (response) { 
      // Handle response if necessary 
     }); 
    } 
}); 

Wo idToDelete die ID des Elements Sie löschen (es gibt zahlreiche Art und Weise, dass die Informationen zu bekommen). Dadurch werden die Daten nur dann an die Controller-Aktion gesendet, wenn der Benutzer das Löschen bestätigt.

Sie können sogar das gleiche tun, wenn Sie ein Formular einreichen:

$("form").submit(function(e) { 
    e.preventDefault(); // Prevent the default form submit 

    var confirmed = confirm("Are you sure?"); 

    if (confiremd) { 
     // Post your data to the controller action 
     $.post($(this).attr("action"), $(this).serialize(), function (response) { 
      // Handle response if necessary 
     }); 
    } 
}); 

diese Weise können Sie bestätigen können, bevor Sie einreichen und daher wissen Sie, dass ein Lösch in Ihrem Controller-Aktion geschehen hat.

Verwandte Themen