1

サードパーティからリスト付きのオブジェクトを取得しているため、コンストラクターを設定できません。2つのActionResultがあります。1つはサードパーティからオブジェクトを取得し、もう1つはjqueryオートコンプリートによって使用されます。

リストを設定して、次のActionResultでnullにならないようにする方法がわかりません...

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新しいインスタンスが取得されます。MyControllermyList

リクエスト間でデータを保存する必要がある場合は、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 に答える