我有2个Controller:OpsLinkController vs OpsController
在OpsLinkController中,我想调用OpsController中的方法
public ActionResult Index()
{
//
OpsController c = new OpsController();
int i = c.Test();
return View();
}
在OpsController中的我有方法
public int Test()
{
Session["A"] = 1;
// Do som thing here
return (int)Session["A"];
}
抛出异常:" System.NullReferenceException:'对象引用未设置为对象的实例。'"
但是当我们可以通过View Index中的ajax调用时,确定:
$.ajax({
contentType: "application/json; charset=utf-8",
dataType: "json",
// type: "POST",
url: "/Ops/Test",
data: {},
success: function (data) {
console.log(data);
},
err: function (response) {
console.log(response);
}
});
结果:1 为什么我们可以通过ajax执行方法测试,但不能从OpsLinkController执行?
我们如何从OpsLinkController访问方法Test?
答案 0 :(得分:1)
回答问题:我们如何从OpsLinkController访问方法测试?
你不能从OpsLinkController调用Test,因为在这种情况下不存在OpsController的会话。
1在页面启动时创建的会话,在OpsLinkController中构建OpsController时
OpsController c = new OpsController();
int i = c.Test();
会话未创建是。
回答问题:为什么我们可以通过ajax执行方法测试?
在ajax中你已经调用了OpsController,这意味着将创建一个OpsController会话。
url: "/Ops/Test",
=>好的,
但如果你的网址是这样的:
url: "/OpsLink /Test",
错误将抛出“System.NullReferenceException:'对象引用未设置为对象的实例。'”