¿Cuál es mejor? ¿Publicación de Ajax o publicación de página [Controller httppost] cuando solo hay un formulario en una página?

Tengo una página llamada Bookprogram que contiene 6 controles de entrada, a saber, txtName, txtEmail, txtPhone, selectcat [menú desplegable para categorías], txtDate, txtMessage. Ahora, cuando haya terminado con todas las validaciones para el control anterior, quiero almacenar los datos en db. Sé cómo realizar tanto en ajax como en la publicación completa de la página.

Si está en ajax, después de las validaciones, simplemente llamaría$.ajax y publicar los datos como una cadena y buscarlos en el controlador de la siguiente manera:

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

Si tengo que publicar una página completa, después de las validaciones, simplemente haría un$(form).submit(); y escriba lo siguiente en el controlador:

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

Solo quiero saber cuál es mejor, seguro y bueno de usar, ya que tengo que mostrar un mensaje después de un envío exitoso. Sé que puedo tomar cualquiera de las formas de mostrar el mensaje, pero ¿Es realmente necesaria la devolución de datos [actualización de página] en este escenario y, en caso afirmativo, ¿cuáles son las ventajas de esto sobre la publicación de ajax?

EDITAR:

Acabo de pasaresta e intenté implementar la segunda solución de la respuesta más votada, pero para mi mala suerte, no estaba afectando el controlador en sí. He mantenido el punto de interrupción en mi controlador.

$(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;
    });

Controlador :

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

¿Qué es lo que me falta aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta