1

我从第 3 方获取了一个带有 List 的对象,因此我无法设置构造函数。我有两个 ActionResult 一个从第 3 方获取对象,另一个用于 jquery 自动完成。

我想不出一种方法来设置列表并防止它在下一个 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)
  }
}
4

2 回答 2

1

对于每个 HTTP 请求,都会创建一个全新的控制器实例。这意味着如果您myList在一个请求中初始化,您将获得一个全新的实例,MyController用于下一个myList未初始化的请求。

如果您需要在请求之间存储数据,请使用Session(用于用户特定的数据)或Cache(用于站点范围的数据,例如查找列表)。

于 2013-03-05T17:52:27.767 回答
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)
 }
 }

我希望这会有所帮助。

问候帕明德

于 2013-03-05T18:09:47.827 回答