2013-07-25 13 views
10

Wypełniam moje TempData z FormCollection, a następnie próbuję sprawdzić wartość mojego TempData w moim widoku z MVC 4, ale moja instrukcja if nie działa tak, jak się spodziewam. Oto mój kod.Jak sprawdzić wartość TempData w moim widoku po poście formularza?

Kontroler:

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

Widok:

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

To wygląda bardzo proste i nie rozumiem, dlaczego nie mogę wyświetlić ten Check. Możesz mi pomóc ?

+0

** wiedzieć jak korzystać ** 'TempData' prawidłowo sprawdzić [to] (http: //sampathloku.blogspot. com/2012/09/how-to-use-aspnet-mvc-tempdata-proper.html) – stom

Odpowiedz

13

Spróbuj tego

var tempval = TempData["var"]; 

następnie napisać if jak postępować

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

Próbowałem i mam taki sam wynik. '@ tempval' daje mi dobrą wartość, ale' if (@tempval == "myvalue") 'nie zwraca true. – Alex

+1

Zmieniłem kod, być może @tempval jest obiektem. –

6

zmiana Spróbuj TempData.Add("var", "abcd");

do

TempData['var'] = "abcd"; 

Aktualizacja:

w moim kontrolera:

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

Moim zdaniem:

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

Próbowałem, nic się nie zmieniło. Dokładnie takie same wyniki ...:/ – Alex

+0

Zobacz moją zaktualizowaną odpowiedź na pytanie, jak to powinno działać. Jeśli to ci nie pomoże, potrzebuję więcej informacji/kodu, by ci pomóc. – Lars

+0

Dzięki Lars. Był to problem, który niepokoi mnie od jakiegoś czasu, w jaki sposób nie mogłem wykonać warunku dla wartości TempData. Okazuje się, że to obiekt! Jestem nareszcie wolny! – JustJohn

Powiązane problemy