2013-07-25 12 views
10

Compilare il mio TempData da un FormCollection e quindi provo a controllare il valore del mio TempData nella mia vista con MVC 4 ma la mia istruzione if non funziona come previsto. Ecco il mio codice.Come verificare il valore di TempData nella mia vista dopo un post di un modulo?

Controller:

[HttpPost] 
public ActionResult TestForm(FormCollection data) 
{ 
    TempData["username"] = data["var"].ToString(); //data["var"] == "abcd" 
    return RedirectToAction("Index"); 
} 

Vista:

@if (TempData["var"] == "abcd") 
{ 
    <span>Check</span> //Never displayed 
} 
else 
{ 
    @TempData["var"]; // Display "abcd" 
} 

Questo sembra davvero semplice e non capisco perché non riesco a visualizzare questo Check. Mi potete aiutare ?

+0

sapere ** come utilizzare ** 'TempData' controllare adeguatamente [questo] (http: //sampathloku.blogspot. com/2012/09/how-to-use-aspnet-mvc-tempdata-proper.html) – stom

risposta

13

Si prega di provare questo

var tempval = TempData["var"]; 

quindi scrivere la if come seguire

@if (tempval.ToString() == "abcd") 
{ 
    <span>Check</span> //Never displayed 
} 
else 
{ 
    <span>@tempval</span>; // Display "abcd" 
} 
+0

Ho provato e ho lo stesso risultato. '@ tempval' mi dà il buon valore ma' if (@tempval == "myvalue") 'non restituisce true. – Alex

+1

Ho cambiato il mio codice, forse @tempval è un oggetto. –

6

cambio Da TempData.Add("var", "abcd");

a

TempData['var'] = "abcd"; 

Aggiornamento:

In My regolatore:

public ActionResult Index() 
    { 
     TempData["var"] = "abcd"; 
     return View(); 
    } 

A mio avviso:

// I cast to string to make sure it's checking for the correct TempData (string) 
@if ((string)TempData["var"] == "abcd") 
{ 
    <span>Check</span> 
} 
else 
{ 
    @TempData["var"].ToString() 
} 
+0

Ho provato, non cambia nulla. Esattamente gli stessi risultati ...:/ – Alex

+0

Vedere la mia risposta aggiornata su come questo dovrebbe funzionare davvero. Se questo non ti aiuta, avrei bisogno di ulteriori informazioni/codice per aiutarti. – Lars

+0

Grazie Lars. E 'stato un problema che mi preoccupava da un po' di tempo in cui non potevo fare un condizionale su un valore di TempData. Si scopre che è un oggetto! Sono finalmente libero! – JustJohn

Problemi correlati