Methods 为什么我的数组没有被传递给我的另一个控制器方法?

Methods 为什么我的数组没有被传递给我的另一个控制器方法?,methods,controller,asp.net-mvc-5,model-binding,Methods,Controller,Asp.net Mvc 5,Model Binding,我在VS13-MVC5中工作,在将数据从一个控制器方法传递到另一个控制器方法(在同一个控制器中)时遇到问题 这是工作正常的HttpPost控制器方法中的最后一段代码,也就是说,我已经仔细检查了它,并验证了数据正在传递到底部的redirecttoaction方法中,您可以在下面看到: ...<irrelevant code that works fine on top>... int[] idArray = new int[questionsToUse.

我在VS13-MVC5中工作,在将数据从一个控制器方法传递到另一个控制器方法(在同一个控制器中)时遇到问题

这是工作正常的HttpPost控制器方法中的最后一段代码,也就是说,我已经仔细检查了它,并验证了数据正在传递到底部的redirecttoaction方法中,您可以在下面看到:

        ...<irrelevant code that works fine on top>...
        int[] idArray = new int[questionsToUse.Count];
        for (var i=0; i<questionsToUse.Count; i++)
        {
            idArray[i] = questionsToUse[i].QuestionId;
        }
        return RedirectToAction("ShowQuiz", new { array = idArray  });
    }
。。。。。。
int[]idArray=newint[questionsToUse.Count];

对于(var i=0;i来说,答案是使用名为“TempData”的特性,这样您就可以将任何集合(以及对象)传递给另一个控制器方法

对我的代码的更改如下所示,从前面提到的post方法的底部开始

    for (int i = 0; i < questionsToUse.Count; i++)
        {
            questionIds[i] = questionsToUse[i].QuestionId;
        }
        TempData["quizquestionids"] = questionIds;
        return RedirectToAction("ShowQuiz");
    }

这个问题的解决方案相当简单且有效。

我发现这是因为我将其放入数组中,当我传递一个值时,它工作正常……有人能告诉我是否有一种类型的集合可以使用,并且可以传输吗?我发现如何使用“TempData”解决这个问题。您无法传递复杂类型,因为您正在执行重定向。这与调用方法不同。您必须序列化数据才能传递数组。可以使用TempData方法发送对象列表,并且它现在正在工作……是的,我可以。是的,使用TempData是可能的,而不是在尝试时通过路由值泰德:请回答你的问题。。
    for (int i = 0; i < questionsToUse.Count; i++)
        {
            questionIds[i] = questionsToUse[i].QuestionId;
        }
        TempData["quizquestionids"] = questionIds;
        return RedirectToAction("ShowQuiz");
    }
    [HttpGet]
    public ActionResult ShowQuiz()
    {
        var caseToShow = new Medcase();
        caseToShow.Title = "Quiz";
        var questionIds = TempData["quizquestionids"] as int[];