【发布时间】:2015-09-04 17:25:49
【问题描述】:
我有两个 ActionResults,我试图只是简单地将一个 int id 从一个 ActionResult 传递给其他。我尝试使用 tempdata,但在查看来自调试器的值后,该值为零。我查看的临时数据示例使用了 redirecttoaction()。这可以用 returnview() 完成吗?
public ActionResult Details(int? id)
{
myEMSurvey mySurvey = db.myEMSurveys.Find(id);
if (mySurvey == null)
{
return HttpNotFound();
}
SurveyViewModel svm = new SurveyViewModel();
svm.mySurvey = mySurvey;
svm.Questions = (from s in db.myEMSurveyQuestions
where s.SurveyID == id
select s).ToList();
svm.Options = (from o in db.myEMQuestionOptions
where o.SurveyID == id
select o).ToList();
svm.Anwsers = (from a in db.myEMSurveyAnswers
where a.SurveyID == id
select a).ToList();
int intid = id.Value;
TempData["ID"] = intid;
return View(svm);
}
[HttpPost]
public ActionResult CsvDownload()
{
int id = Convert.ToInt32(TempData["ID"]); //value of id=0, TempData["ID"] = 33
var Anwsers = (from a in db.myEMSurveyAnswers
where a.SurveyID == id
select a).ToList();
//id = 0
}
详细视图中的 CsvDownload:
@using (Html.BeginForm("CsvDownload", "Survey", FormMethod.Post))
{
<div class="text-center">
<input type="submit" name="button" value="Download" class="btn btn-success" />
</div>
<br />}
【问题讨论】:
-
TempData 只存在于当前请求的生命周期中。目前尚不清楚您如何在上面调用
CsvDownload。这两个是独立的回帖吗? -
TempData 只有在 Action 方法之间重定向时才可靠且有用。您可以考虑在此处使用 Session 变量或 Hidden 输入或其他一些构造。
-
@GeorgeJohnston 我已经用我的详细信息视图中的信息更新了我的问题。感谢您的评论!
-
@user2133925 tempdata 也适用于返回视图,请检查这一行的值 TempData["ID"] = intid;
-
@user2133925 您可以尝试将其转换为 int,请检查您在视图中的值是多少。将其写入您的视图中并查看值 {int i=TempData["ID"]. convertToInt()}
标签: c# asp.net-mvc