私のビューにはgetメソッドとpostメソッドがあり、getメソッドではいくつかのViewDataオブジェクトの値を設定します。しかし、postメソッドを呼び出すと、これらのViewDataオブジェクトはnullになります。投稿方法でリセットする必要がありますか?ここに私のコードは次のとおりです。投稿全体でViewDataを使用しています
public ActionResult Index()
{
ViewData["afceaststandings"] = GetStandingsForGrid("2017", "AFC East");
ViewData["afccentralstandings"] = GetStandingsForGrid("2017", "AFC Central");
ViewData["afcweststandings"] = GetStandingsForGrid("2017", "AFC West");
return View("Index");
}
[HttpPost]
public ActionResult Index(QBRating qbm)
{
if (ModelState.IsValid)
{
string Result;
double dblResult;
qbm.Completion = ((qbm.Completion - 30) * 0.05);
if (qbm.Completion < 0)
{
qbm.Completion = 0;
}
if (qbm.Completion > 2.375)
{
qbm.Completion = 2.375;
}
qbm.Gain = ((qbm.Gain - 3) * 0.25);
if (qbm.Gain < 0)
{
qbm.Gain = 0;
}
if (qbm.Gain > 2.375)
{
qbm.Gain = 2.375;
}
qbm.Touchdown = (qbm.Touchdown * 0.2);
if (qbm.Touchdown > 2.375)
{
qbm.Touchdown = 2.375;
}
qbm.Interception = (2.375 - (qbm.Interception * 0.25));
if (qbm.Interception < 0)
{
qbm.Interception = 0;
}
dblResult = Math.Round((((qbm.Completion + qbm.Gain + qbm.Touchdown + qbm.Interception)/6) * 100), 2);
Result = "QB Rating = " + Convert.ToString(dblResult);
TempData["QBRating"] = Result;
}
//invalid - redisplay form with errors
return View(qbm);
}
ほとんどの場合、TempDataは事実上役に立たないと感じます。 TempDataで何かを設定すると、次のページに表示されます。しかし、ユーザーがページを更新すると、そのページは消えてしまいます。したがって、これは1回だけのショットです。 –
@MystereMan TempDataは、POSTコントローラアクションで何らかの操作を実行した後に別のアクションにリダイレクトし、この場合はGETリクエストからPOSTリクエストまでのデータしか保持しない場合に便利です。ユーザーがPOST要求をしなくてGET経由で別の場所に移動した場合は、TempDataのデータを削除することをお勧めします。 –
本当に、私はPRGがそのために有効であると思います。しかし、他のほとんどのケースでは、私はリフレッシュの制限のために非常に有用であるとは思わない。しかし、私の理解では、TempDataは次回アクセスするまでそのデータを保持するようになりました。つまり、セッションが終了するまでTempDataに移動しても移動します。 –