web-dev-qa-db-ja.com

フォームの投稿後にビューでTempData値を確認する方法は?

TempDataをFormCollectionから入力し、MVC 4でビューのTempDataの値を確認しようとしましたが、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を表示できない理由がわかりません。手伝って頂けますか ?

14
Alex

これを試してください

var tempval = TempData["var"];

次に、ifステートメントを次のように記述します

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

変更してみてくださいTempData.Add("var", "abcd");

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()
}
6
Lars

MVC Viewでコードブロックを開始する前に、常に@ {}の使用を開始してから、コード行を記述し、セミコロン(;)で終了します。

enter image description here

0
Ishwor Khanal