Как проверить значение TempData в моем представлении после публикации формы?

Я заполняю свои TempData из FormCollection, а затем пытаюсь проверить значение моего TempData в моем представлении с помощью MVC 4, но мой оператор if не работает, как я ожидаю. Вот мой код.

Контроллер:

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

Просмотр:

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

Это выглядит очень просто, и я не понимаю, почему я не могу отобразить это Check. Вы можете помочь мне ?


person Alex    schedule 25.07.2013    source источник
comment
знать как использовать TempData правильно проверить это   -  person Shaiju T    schedule 02.07.2015


Ответы (3)


Пожалуйста, попробуйте это

var tempval = TempData["var"];

затем напишите оператор if следующим образом

@if (tempval.ToString() == "abcd") 
{
    <span>Check</span> //Never displayed
}
else
{
    <span>@tempval</span>; // Display "abcd"
}
person Elvin Mammadov    schedule 25.07.2013
comment
Я пробовал, и у меня тот же результат. @tempval дает мне хорошее значение, но if(@tempval == "myvalue") не возвращает true. - person Alex; 25.07.2013

Попробуйте изменить TempData.Add("var", "abcd");

to

TempData['var'] = "abcd";

Обновлять:

В моем контроллере:

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

На мой взгляд:

// 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()
}
person Lars    schedule 25.07.2013
comment
Смотрите мой обновленный ответ о том, как просто это должно работать. Если это вам не поможет, мне понадобится дополнительная информация/код, чтобы помочь вам. - person Lars; 25.07.2013
comment
Спасибо, Ларс. Некоторое время меня беспокоила проблема, связанная с тем, что я не мог выполнить условие для значения TempData. Оказывается, это объект! Я наконец-то свободен! - person JustJohn; 20.03.2016

Перед запуском любого блока кода в представлении MVC всегда начинайте с @{ }, затем пишите любую строку кода и заканчивайте точкой с запятой (;)

введите здесь описание изображения

person Ishwor Khanal    schedule 30.08.2018