![](/img/trans.png)
[英]TempData value implicitly cast from List<string> to string[] after RedirectToAction()
[英]How to cast Tempdata as List<string>
我需要帮助!
我正在尝试使用 TempData 将 List 从一个 ActionResult 传递到另一个 ActionResult。 我这样做是因为我试图用三个问题进行实验,其中每个视图的顺序从一开始就是随机的。
public ActionResult Experiment()
{
List<string> stringArray = new List<string>();
stringArray.Add("Experiment" + rn1.ToString());
stringArray.Add("Experiment" + rn2.ToString());
stringArray.Add("Experiment" + rn3.ToString());
var nextExperiment = stringArray.FirstOrDefault();
stringArray.RemoveAt(0);
var experiment = new Experiment();
_context.Add(experiment);
_context.SaveChanges();
TempData["List"] = stringArray;
return RedirectToAction(nextExperiment, new { id = experiment.EID });
}
但是当我试图从 stringList 读取数据时,它为空。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Experiment1(ExperimentViewmodel experiment)
{
var newExperiment = new Experiment
{
Question1 = experiment.SelectededItem
};
if (ModelState.IsValid)
{
_context.Update(newExperiment);
await _context.SaveChangesAsync();
var stringList = TempData["List"] as List<string>; //stringList = null
var nextExperiment = stringList.FirstOrDefault(); //The next view in the sequence
stringList.RemoveAt(0); //Removing the view from the list since it's already been used.
TempData["List"] = stringList; //Updating TempData with the new list for the next view.
return RedirectToAction(nextExperiment, new { id = newExperiment.EID });
}
return View();
}
更新: TempData["List"] 确实包含值,但我不知道如何检索数据。 当我尝试将其转换为 List(这将是最佳的)时,var stringList 为 null。
您必须先发布 TempData["List"] ,因为在回发后重置:
<input type="hidden" name="mylist" value="@TempData["List"]">
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Experiment1(ExperimentViewmodel experiment,mylist[])
{
var newExperiment = new Experiment
{
Question1 = experiment.SelectededItem
};
if (ModelState.IsValid)
{
_context.Update(newExperiment);
await _context.SaveChangesAsync();
var stringList = mylist as List<string>;
var nextExperiment = stringList.FirstOrDefault();
stringList.RemoveAt(0);
TempData["List"] = stringList;
return RedirectToAction(nextExperiment, new { id = newExperiment.EID });
}
return View();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.