我需要两项行动结果之间传递一些数据,所以我想我会尝试TempData
(我真的很新的MVC这样忍耐一下)。这是我试过的:int为null但TempData不是?
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
始终为空。为什么?我该如何解决它?
编辑:
我注意到一个相当奇怪的事;当试图达林Dimitrovs建议,并可能做我尝试藏汉的时候,如果我把一个断点只在它返回空值它不会破坏后才行线。就好像该行被注释掉并且根本不执行一样。欢迎来到暮光之城。
EDIT2:
以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;
我仍然得到的是 “测试并不在当前的背景下存在”。
EDIT3:
取2个工作正常。我的变量是null
,因为我从来没有在任何地方使用它们。我认为我一次只能采取一步,但很明显,在某些情况下,您必须采取几个步骤才能看到它们中的任何一个。
教训:一定要使用声明的变量,否则会null
。
如何'test'为null,它'int'不是'诠释?'? – Habib
我不知道,但是在调试时,“int test”中的“添加监视”给了我null。这是奇怪的事情。 –
您是否检查天气公司从TempData [“Companies”]有一些价值? –