我正在开发一个MVC 5应用程序,我在我的应用程序中有一个特定的Controller for Session变量,它有6个会话,并且一切正常。现在我想使用另一个会话,所以我在Session控制器中声明它如下:
public int tempResult
{
get { return Convert.ToInt32(Session["tempResult"]); }
set { Session["tempResult"] = value; }
}
现在我有一个继承自Session Controller的Controller A,它将方法中的会话变量tempResult设置为:
[HttPPost]
public JsonResult COAcodelength(MST m)
{
var s = (from sets in db.ABCs where sets.name == "Name" && sets.pre.ToString() == m.house select sets.Id).Single().ToString();
tempResult = Convert.ToInt32(s);
}
现在,继承自Session Controller的Controller B正在调用Controller A的方法,在该方法中,我试图访问tempResult的会话值:
[HttpPost]
public ActionResult New([Bind(Include = "Id,Name,House,Number")] MST tr)
{
tr.Name = r.Ccode(tr); // r is the instance of Controller A
db.MSTs.Add(tr);
db.SaveChanges();
return Json(tr);
}
控制器A中的 Ccode 方法如下:
public string Ccode (MST tr)
{
int q = tempResult;
tr.Name = q.ToString() + tr.House;
return tr.Name;
}
因此,当Controller A中的Ccode方法试图获取 tempResult 的值时,它将返回带有Object引用错误的null。
可能出现什么问题?
答案 0 :(得分:1)
你不能将null转换为int 32,这意味着如果你的tempResult可以为null,你应该像这样使用它:
public int? tempResult
{
get { return Convert.ToInt32(Session["tempResult"]); }
set { Session["tempResult"] = value; }
}
然后允许整数变量接受null。
int?
表示整数变量可以为空。