我从第三方获得一个带有List的对象,所以我无法设置构造函数。 我有两个ActionResult,一个从第三方获取对象,另一个由jquery自动完成使用。
我无法找到一种方法来设置List并防止它在下一个ActionResult中不为空...
public class MyController : Controller
{
public List<T> myList;
public ActionResult CallToGetThirdPartList(ThirdPartyObject obj)
{
list = obj.SpecialList;
return View(obj); //important
}
public ActionResult Search(ThirdPartyObject obj) //gets called from jquery
{
var results = from m in myListist //this is null
where m.Title.StartsWith(term)
select new { label = m.Summary, m.id };
return Json(results, JsonRequestBehavior.AllowGet)
}
}
答案 0 :(得分:1)
对于每个HTTP请求,都会创建一个全新的控制器实例。这意味着,如果您在一个请求中初始化myList
,那么您将获得MyController
的全新实例,用于未初始化myList
的下一个请求。
如果您需要在请求之间存储数据,请使用Session(针对用户特定数据)或Cache(针对网站范围内的数据,例如查找列表)。
答案 1 :(得分:0)
您需要稍微更改一下代码。
public class MyController : Controller
{
public List<T> myList;
public ActionResult CallToGetThirdPartList(ThirdPartyObject obj)
{
list = obj.SpecialList;
Session["list"] = list;
return View(obj); //important
}
public ActionResult Search(ThirdPartyObject obj) //gets called from jquery
{
var listFromSession = Session["list"] as List<T>;
var results = from m in listFromSession //this is null
where m.Title.StartsWith(term)
select new { label = m.Summary, m.id };
Session["result"]=results ;
return Json(results, JsonRequestBehavior.AllowGet)
}
}
我希望这应该有所帮助。
问候 成员Parminder