quisiera acceder al TempData en mi ayudante para un mensaje flash (como en rubí)uso TempData en un error de Ayudante: El nombre 'TempData' no existe en el contexto actual
consigo una error de ejecución de
The name 'TempData' does not exist in the current context
mi Flash.cshtml es el siguiente
@helper Show()
{
var message = "test message";
var className = "info";
if (TempData["info"] != null)
{
message = TempData["info"].ToString();
className = "info";
}
else if (TempData["warning"] != null)
{
message = TempData["warning"].ToString();
className = "warning";
}
else if (TempData["error"] != null)
{
message = TempData["error"].ToString();
className = "error";
}
<script>
$(document).ready(function() {
$('#flash').html('@HttpUtility.HtmlEncode(message)');
$('#flash').toggleClass('@className');
$('#flash').slideDown('slow');
$('#flash').click(function() { $('#flash').toggle('highlight') });
});
</script>
}
en el diseño tengo
<section id="main">
@Flash.Show()
<div id="flash" style="display: none"></div>
@RenderBody()
</section>
yo era capaz de utilizar esta respuesta para hacer lo mismo, aunque no en un ayudante http://stackoverflow.com/a/5582533/31470 gracias – eiu165
nonononono favor de que no quieres pasar una -controller- a -vista-. ¿Qué hay de configurar un filtro que empuje automáticamente TempData en la bolsa de visualización? O utilice los métodos OnActionExecut {ing, ed} en una clase base de controlador para rellenar la viewbag con los datos. Directamente empujando los métodos/campos/foo del controlador desde dentro de una vista casi rompe la encapsulación. La diferencia entre los dos ejemplos es que la solución vinculada no usa el controlador en la vista. – Cornelius
Ahora puede usar helper.ViewContext.TempData. –