Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# int为null,但TempData不是?_C#_Asp.net Mvc_Tempdata - Fatal编程技术网

C# int为null,但TempData不是?

C# int为null,但TempData不是?,c#,asp.net-mvc,tempdata,C#,Asp.net Mvc,Tempdata,我需要在两个动作结果之间传递一些数据,所以我想我应该试试TempData(我对MVC很陌生,所以请耐心等待)。这就是我尝试过的: public ActionResult Edit(Companies companies, HttpPostedFileBase file) { if (ModelState.IsValid) { try {

我需要在两个动作结果之间传递一些数据,所以我想我应该试试
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;
现在问题来了<代码>公司。BolagsID有一个值,但
test
始终为空。为什么?我该如何修复它

编辑:

我注意到一件很奇怪的事;在尝试Darin Dimitrovs的建议时,或者在尝试时,如果我只在返回空值的行上放置断点,则直到返回空值后的行才中断。好像那行被注释掉了,根本不执行。欢迎来到暮色地带

EDIT2:

第二个例子:

[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});
以及:

我仍然认为“测试在当前上下文中不存在”

EDIT3:

拿两个就行了。我的变量在声明时为
null
,因为我从未在任何地方使用过它们。我想我会一步一步地去做,但显然,在某些情况下,你必须要做几步才能看到它们中的任何一个起作用


经验教训:确保使用声明的变量,否则它们将
null

我建议您不要使用TempData,因为它依赖于会话。如果您只需要这个
BolagsID
,只需将其作为参数传递即可:

public ActionResult Edit(Companies companies, HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        try
        {
            if (file != null)
            {
                //Do stuff with file, save changes to database etc.
                return RedirectToAction("bgcTest2", "Companies", new { BolagsID = companies.BolagsID });
然后:

public ActionResult bgcTest2(int bolagsID)
{
    ... use the bolagsID here directly
}

不幸的是,您无法使用这种方法传递复杂对象。但是,您可以将此对象保留在数据存储中,并仅将id传递给目标控制器操作,该操作将允许您在重定向后从此数据存储中检索它。

我建议您不要使用TempData,因为它依赖于会话。如果您只需要这个
BolagsID
,只需将其作为参数传递即可:

public ActionResult Edit(Companies companies, HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        try
        {
            if (file != null)
            {
                //Do stuff with file, save changes to database etc.
                return RedirectToAction("bgcTest2", "Companies", new { BolagsID = companies.BolagsID });
然后:

public ActionResult bgcTest2(int bolagsID)
{
    ... use the bolagsID here directly
}


不幸的是,您无法使用这种方法传递复杂对象。但是,您可以将此对象保留在数据存储中,并仅将id传递给目标控制器操作,该操作将允许您在重定向后从此数据存储中检索它。

如何将
test
设置为null,其
int
不是
int?
?我不知道,但在调试和“添加监视”时在
int test
上,给我空值。这就是wierd。您是否检查了天气公司是否从TempData[“companys”]中获得了一些值?是的,正如所述
companys。BolagsID
有一个值,但我在调试器的该行后面得到了“名称测试在当前上下文中不存在”。是否有名为
companys
的控制器?
bgcTest2
在那个控制器下吗?
test
怎么可能是空的,它的
int
不是
int?
?我不知道,但是当调试和
int test
上的“添加手表”时给我空的。这就是wierd。您是否检查了天气公司是否从TempData[“companys”]中获得了一些值?是的,正如所述
companys。BolagsID
有一个值,但我在调试器的该行后面得到了“名称测试在当前上下文中不存在”。是否有名为
companys
的控制器?
bgcTest2
是否在该控制器下?使用您的示例,在观看时仍会显示“名称“test”在当前上下文中不存在”:(在我在回答中发布的代码示例中,您在哪里看到了
test
?哦,对不起,您在哪里写了“…在这里直接使用bolagsID”我尝试了
int test=bolagsID;
,只是想看看我是否会得到一个值。但是您提到的错误消息与此代码无关:
“当前上下文中不存在名称“test”
。我假设您试图在其他上下文中使用此
test
变量。很抱歉,没有看到您的代码,很难提供帮助。@Christopherén,稍加更正,它不是在MVC中,而是在C中。使用您的示例仍然会让我感到”“观看时”的当前上下文中不存在名称“test”。(在我在回答中发布的代码示例中,您在哪里看到了
test
?哦,对不起,您在哪里写了“…直接在这里使用bolagsID“我尝试了
int test=bolagsID;
,只是想看看我是否能得到一个值。但是您提到的错误消息与此代码无关:
“名称“test”在当前上下文中不存在”
。我假设您正试图在其他上下文中使用此
测试
变量。抱歉,没有看到您的代码,很难提供帮助。@Christopherén,稍作修改,它不是在MVC中,而是在C中。