Welches ist besser? Ajax-Beitrag oder Seitenbeitrag [Controller httppost], wenn sich nur ein Formular auf einer Seite befindet?

Ich habe eine Seite namens Bookprogram, die 6 Eingabesteuerelemente enthält, nämlich txtName, txtEmail, txtPhone, selectcat [Dropdown für Kategorien], txtDate, txtMessage. Wenn alle Überprüfungen für das obige Steuerelement abgeschlossen sind, möchte ich die Daten in db speichern. Ich weiß, wie man sowohl in Ajax als auch beim vollständigen Posten von Seiten vorgeht.

Wenn es in Ajax ist, würde ich nach Validierungen einfach @ anruf$.ajax und poste die Daten als String und hole sie wie folgt in den Controller:

[HttpPost]
public JsonResult BookProgram(string name, string email, string phone, string category, string date, string message)
{
       //code to save into db
       return Json(result);
}

Wenn ich eine ganze Seite posten muss, würde ich nach der Validierung einfach ein @ mach$(form).submit(); und schreibe wie unten im Controller:

[HttpPost] 
public ActionResult Bookprogram(Mymodel model)
{
     //Code to save the data 
     return View();
}

Ich möchte nur wissen, welche besser, sicherer und nützlicher ist, da ich nach erfolgreicher Übermittlung eine Nachricht anzeigen muss. Ich weiß, dass ich eine der beiden Möglichkeiten zur Anzeige von Nachrichten wählen kann, aber ist in diesem Szenario wirklich ein Postback [Seitenaktualisierung] erforderlich, und wenn ja, welche Vorteile hat es gegenüber einem Ajax-Post?

EDIT:

Ich bin gerade durchgegangenDielink und haben versucht, die 2. Lösung der am höchsten bewerteten Antwort zu implementieren, aber für mein Pech traf es den Controller selbst nicht. Ich habe den Haltepunkt in meinem Controller beibehalten.

$(form).on("submit", function (e) {
        e.preventDefault();
        ValidateForm(form);
        var selectedVal = $(form).find('select').children(":selected").val();
        if(selectedVal=="")
        {
            $(form).find('div.bootstrap-select').children(":first").addClass('alert-danger');
            $(form).find('div.bootstrap-select').next('.text-danger').html('Please select a category!');
        }
        var formContainer = $(form + ' .text-danger');
        if ($(formContainer).text().length == 0) {
            $.ajax({
                url: '/Home/BookProgram/',
                type: "POST",
                dataType: 'json',
                contentType: "application/json; charset=utf-8",
                data: $('#fbookprogram').serializeArray(),
                success: function (data) {
                    if (data.result == "Success") {
                          alert('success');
                    }
                    else {
                         alert('fail');
                        return false;
                    }
                    return true;
                }
            });
        }
        $(form).unbind('submit');
        return false;
    });

Controller:

public ActionResult BookProgram(MyModel model)
{
    if(ModelState.IsValid)
    {
        //code to save data
    }
    return Json(new { success = false });
}

as fehlt mir hie

Antworten auf die Frage(4)

Ihre Antwort auf die Frage