Methods 为什么我的数组没有被传递给我的另一个控制器方法?
我在VS13-MVC5中工作,在将数据从一个控制器方法传递到另一个控制器方法(在同一个控制器中)时遇到问题 这是工作正常的HttpPost控制器方法中的最后一段代码,也就是说,我已经仔细检查了它,并验证了数据正在传递到底部的redirecttoaction方法中,您可以在下面看到: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.
...<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[];