【发布时间】:2017-04-17 02:49:52
【问题描述】:
我必须将 iddemande 从一个 ActionResult 传递到同一个控制器中的另一个,但由于每个 ActionResult 呈现不同的视图,因此 TempData 或 Session 失败。 所以我需要你的帮助来了解如何在这两个控制器之间传递数据,从“Details”到“Sortie”。
我的控制器:
public ActionResult Details(int? num,int iddemande)
{
TempData["num"] = num;
//Session["iddemande"] = iddemande;
TempData["iddemande"] = iddemande;
if (num == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var listdemandes = (from d in db.Demande_Gabarit
join g in db.Gabarits
on d.idPoste equals g.idPoste into ThisList
from g in ThisList.DefaultIfEmpty()
select new
{
NumDemande = d.NumDemande,
Emetteur = d.Emetteur,
Date = d.Date,
Quantite = d.Quantite,
Designation = g.DesignationGabarit,
Produit=d.Postes.Produits.Reference,
Ligne = d.Ligne.designation
}).ToList().Select(x => new DemandeViewModel()
{
NumDemande = x.NumDemande,
Emetteur = x.Emetteur,
Date = x.Date,
Quantite = x.Quantite,
DesignationGabarit = x.Designation,
designation = x.Ligne,
Reference= (int)x.Produit
}).Where(x => x.NumDemande == num);
return View(listdemandes.DistinctBy(x=>x.DesignationGabarit));
}
//Get Sortie
public ActionResult Sortie(Int64 id)
{
TempData["codebarre"] = id;
return View();
}
//Post Sortie
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Sortie(DemandeViewModel postData)
{
Int64 cb = postData.CodeBarre;
var mvtrepository = new MvtRepository(db);
var gabaritrepository = new GabaritRepository(db);
if (Convert.ToInt64(TempData["codebarre"]) == cb)
{
var mvtInsert = mvtrepository.InsertMvt(DateTime.Now, Convert.ToInt64(TempData["codebarre"]), 2);
var idDemande = Convert.ToInt32(TempData["iddemande"]);
Demande_Gabarit demande =
demanderepository.Get(x => x.id_demande == idDemande).SingleOrDefault();
demande.QtLivree = 1;
demanderepository.Update(demande);
return RedirectToAction("Details");
}
else
{
return View("Error");
}
}
【问题讨论】:
-
哪里不工作(具体方法/线路)?您的预期行为是什么?会话应该可以工作。
-
感谢您的快速回复。对我来说不起作用的是 ActionResult"Sortie" 中的 iddemande 为空
-
@Shyju 我编辑了我的问题..我的意思是在同一个控制器中的两个 actionResults 之间
-
您的意思是,在您的 GET 和 POST 操作方法之间?为什么你认为它不起作用?
TempData["codebarre"]在您的 HttpPost 操作方法中是否为空? -
@oumaima 会话不工作?您是否尝试使用 session 而不是 TempData?
标签: c# asp.net asp.net-mvc