0
我有兩個ActionResults,我想只是簡單地從一個的ActionResult傳遞到另一個INT ID。我試圖使用tempdata,但在查看調試器的值後,該值爲零。我看到的tempdata示例使用redirecttoaction()。這可以通過returnview()?使用TempData的與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'。這兩個單獨的職位是後? –
在Action方法之間重定向時,TempData只是可靠和有用的。你可以考慮在這裏使用Session變量或Hidden輸入或其他構造。 –
@GeorgeJohnston我已經更新了我的問題和來自我的詳細信息視圖的信息。感謝您的評論! – user2133925