我需要在两个操作结果之间传递一些数据,所以我想我会尝试TempData
(我真的是 MVC 新手,所以请耐心等待)。这是我尝试过的:
public ActionResult Edit(Companies companies, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
try
{
if (file != null)
{
//Do stuff with file, save changes to database etc.
TempData["Companies"] = companies;
return RedirectToAction("bgcTest2", "Companies");
现在临时数据已存储。并检索它:
public ActionResult bgcTest2(string BolagsID, Companies companies)
{
try
{
companies = TempData["Companies"] as Companies;
int test = companies.BolagsID;
现在问题来了;companies.BolagsID
有一个值,但test
始终为空。为什么?我该如何解决?
编辑:
我注意到一件相当奇怪的事情;在尝试 Darin Dimitrovs 的建议时,也可能在我尝试时,如果我只在返回空值的行上放置一个断点,它直到下一行才会中断。好像该行已被注释掉并且根本不执行。欢迎来到暮光之城。
编辑2:
取2:
[HttpPost]
public ActionResult Edit(Companies companies, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
try
{
if (file != null)
{
// non related stuff
return RedirectToAction("bgcTest2", "Companies", new {BolagsID = companies.BolagsID});
和:
[Authorize]
public ActionResult bgcTest2(int BolagsID)
{
try
{
int test = BolagsID;
我仍然得到“当前上下文中不存在测试”。
编辑3:
拿2个工作正常。我的变量null
在声明时是因为我从未在任何地方使用过它们。我想我会一步一步来,但显然,在某些情况下,你必须采取几个步骤才能看到它们中的任何一个都有效。
经验教训:一定要使用声明的变量,否则它们将是null
.