Vorrei accedere al TempData in mio aiuto per un messaggio flash (come in Ruby)uso TempData un errore di Helper: Il nome 'TempData' non esiste nel contesto corrente
ho un errore di runtime di
The name 'TempData' does not exist in the current context
mia Flash.cshtml è la seguente
@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>
}
nel layout ho
<section id="main">
@Flash.Show()
<div id="flash" style="display: none"></div>
@RenderBody()
</section>
ero in grado di utilizzare questa risposta per fare la stessa cosa anche se non in un aiutante http://stackoverflow.com/a/5582533/31470 grazie – eiu165
Nonononono si prega di non si vuole passare un -controller- a un -view-. Che ne dici di impostare un filtro che spinge automaticamente il TempData nel view bag? In alternativa, utilizzare i metodi OnActionExecut {ing, ed} in una classe di base del controller per popolare il viewbag con i dati. Il controllo diretto dei metodi/campi/foo del controllore da una vista interrompe praticamente l'incapsulamento. La differenza tra i due esempi è che la soluzione collegata non utilizza il controller nella vista. – Cornelius
Ora è possibile utilizzare helper.ViewContext.TempData. –