我正在使用Ajax从服务器返回值,但在调用方法incrementvalue()
时,_value
具有空引用,即使它先前已在intialisevalue()
中设置方法。我在下面有一些示例代码。
public class test
{
public int value;
public void increment(int _value)
{
value = value + _value;
}
public void setvalue(int _value)
{
value = _value;
}
}
public test _value;
public JsonResult intialisevalue()
{
_value = new test();
_value.setvalue(9);
return Json(_value);
}
public JsonResult incrementvalue()
{
_value.increment(2);
return Json(_value);
}
有什么想法吗?
答案 0 :(得分:1)
控制器仅存在于请求中。在发送响应之后,控制器被丢弃。因此,test
不再存在。你需要将测试对象传递给控制器
public JsonResult incrementvalue(test t, increment i)
{
t.increment(i);
return Json(t);
}
答案 1 :(得分:0)
在调用控制器之间不保留您的值。当您调用incrementvalue方法时,它正在使用该字段的新副本。您可能会发现它抛出异常,因为_value为null。
当你调用控制器时,你应该将值的副本传递给incrementvalue方法,然后递增并返回它。
答案 2 :(得分:0)
您没有在以下方法中为_value
分配新的引用。
public JsonResult incrementvalue()
{
_value.increment(2);
return Json(_value);
}
你应该修改如下。
public JsonResult incrementvalue()
{
_value=new Test(); //Assigns a new reference to `_value`
_value.increment(2);
return Json(_value);
}
答案 3 :(得分:0)
您需要重新初始化_value每次调用服务器。 HTTP是无状态的,您的变量不会在请求之间保持状态。