繁体   English   中英

如何将临时数据转换为列表<string>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM