¿Cuál es el enfoque recomendado para proporcionar notificaciones / confirmaciones de usuario en MVC?

Un escenario común que encuentro es proporcionar notificaciones / confirmaciones a los usuarios después de que hayan realizado una acción para informarles del éxito.

Por ejemplo, supongamos que un usuario proporciona comentarios en un formulario de comentarios y luego hace clicEnviar comentarios. Es posible que desee mostrar un mensaje de 'Gracias por sus comentarios'después ha realizado alguna validación, p. Tienen un correo electrónico válido en la base de datos. Algunos pseudocódigo:

public ActionResult SubmitFeedback(string Feedback, int UserID)
{
    MyDataContext db = new DataContext()

    if(db.usp_HasValidEmail(UserID)) //Check user has provided a valid email
        return View("Index"); //Return view and display confirmation
    else
        ModelState.AddModelError("InvalidEmail", "We do not hold an email record for you. Please add one below");
        return View("Index);
}

Entiendo cómo validar entradas usandoHtml.ValidationMessage etc. Esto está bien y, por lo general, verifico si hay entradas no válidas, ya sea usando jQuery en el lado del cliente o temprano en mi Acción (es decir, antes de comenzar a golpear la base de datos) y salgo de mi acción si hay entradas no válidas.

Sin embargo, ¿qué pasa con el escenario donde todas las entradas son válidas y desea mostrar un mensaje de confirmación?

Opción 1: Tener una vista completamente separada

Esto parece violar los principios DRY al tener una Vista completamente nueva (y ViewModel) para mostrar información casi idéntica, espere la notificación del usuario.

opcion 2: Lógica Condicional en la Vista

En este escenario, podría tener una declaración condicional en la Vista que verifique la presencia de algunos TempData que se pasan en elSubmitFeedback Acción. De nuevo, seudocódigo:

   <% if(TempData["UserNotification"] != null {%>
   <div class="notification">Thanks for your Feedback&#33;</div>
   <% } %>

Opción 3: Use jQuery para verificar TempData en la carga de la página

En este escenario, tendría un campo oculto que llenaría con TempData a través deSubmitFeedback&nbsp;Acción. Luego usaría jQuery para verificar el valor del campo oculto. Más pseudocódigo:

<%=Html.Hidden("HiddenField", TempData["UserNotification"])%> //in View

$(document).ready(function() {
    if ($("input[name='HiddenField']").length > 0)
        $('div.notification').show();
        setTimeout(function() { $('div.notification').fadeOut(); }, 3000);
});

Mis pensamientos iniciales sobre esto son:

Opción 1:&nbsp;Separación completa de vistas, pero parece excesivo e ineficiente (viola DRY)Opcion 2:&nbsp;Bastante simple, pero tiene una lógica condicional en la Vista (¿no me sacrifican en el altar de MVC por esto?!?)Opcion 3:&nbsp;Siente que es complicar demasiado las cosas. Sin embargo, evita la lógica en la vista.

¿Lo que usted dice? Opción 1,2,3 o ninguna? ¿Hay una mejor manera?

¡Por favor aumente mis patrones de codificación!