2013-07-25 3 views
10

Ich fülle meine TempData von einer FormCollection und dann versuche ich den Wert meiner TempData in meiner Ansicht mit MVC 4 zu überprüfen, aber meine if Anweisung funktioniert nicht wie ich es erwarte. Hier ist mein Code.Wie überprüfe ich den TempData-Wert in meiner Ansicht nach einem Formular-Post?

Controller:

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

Ausblick:

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

Das sieht wirklich einfach und ich verstehe nicht, warum ich nicht diese Check anzeigen kann. Kannst du mir helfen ?

+0

weiß ** **, wie zu verwenden 'TempData' richtig überprüfen [diese] (http: //sampathloku.blogspot. com/2012/09/how-to-use-aspnet-mvc-tempdata-richtig.html) – stom

Antwort

13

Bitte versuchen Sie diese

var tempval = TempData["var"]; 

dann Ihre if-Anweisung schreiben, wie

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

Ich habe versucht und ich habe das gleiche Ergebnis. '@ tempval' gibt mir den guten Wert, aber' if (@tempval == "myvalue") 'gibt nicht wahr zurück. – Alex

+1

Ich habe meinen Code geändert, vielleicht ist @tempval ein Objekt. –

6

Versuchen Änderung TempData.Add("var", "abcd");

zu

TempData['var'] = "abcd"; 

Update:

In My Controller:

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

Aus meiner Sicht:

// 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

Ich habe versucht, nichts zu ändern. Genau die gleichen Ergebnisse ...:/ – Alex

+0

Siehe meine aktualisierte Antwort, wie einfach das eigentlich funktionieren sollte. Wenn Ihnen das nicht weiterhilft, würde ich weitere Informationen/Codes benötigen, um Ihnen zu helfen. – Lars

+0

Danke Lars. Es war ein Problem, das mich seit einiger Zeit beunruhigte, wie ich einen TempData-Wert nicht machen konnte. Stellt sich heraus, es ist ein Objekt! Ich bin endlich frei! – JustJohn

Verwandte Themen