簡體   English   中英

如何在ASP.Net MVC中使用線程加載數據?

[英]How to load data using thread in ASP.Net MVC?

首先,我正在使用.Net framework 4,因此,我現在還不能使用Async / Await(是的,我知道,我應該升級到vs 2013)。

無論如何,請看下面的簡單代碼:

    public ActionResult Index()
    {
        HomeViewModel model = new HomeViewModel();
        var worker = new BackgroundWorker();
        worker.DoWork += (s, e) =>
            {
                model.ItemsToDisplay = SlowProcessList();
            };

        return View(model);
    }

    public static List<string> SlowProcessList()
    {
        List<string> strList = new List<string>();

        strList.Add("First Item");
        Thread.Sleep(3000);

        strList.Add("Second Item");
        Thread.Sleep(3000);

        strList.Add("Third Item");
        Thread.Sleep(3000);

        return strList;
    }

視圖:

@foreach (var item in Model.ItemsToDisplay)
{
    <p>@item</p>
}

如您所見,我想先返回視圖,然后將數據加載到后台,並在可用時將其顯示在表單上。 誰能指導我正確的方向?

我在想解決此問題的正確方法是:在PageLoad上進行Ajax調用並等待該響應。

在HTTP中,您只能發送一次響應。

HTTP示例

您無法發送大部分響應,然后讓服務器繼續在后台工作以稍后發送更多數據。

但這沒關系,因為您的下一個想法是正確的。 解決此問題的方法是使用javascript讓客戶端發送更多請求,從而獲取更多數據。

我個人使用AngularJS 讓我們看看它是如何工作的。

  1. 用戶請求一個頁面(一個動作)。
  2. 網絡服務器將響應作為單個HTML頁面提供。
  3. 頁面加載后, Angular控制器將加載其他數據。
  4. Angular將數據呈現到頁面。

Angular和MVC

您需要閱讀一些有關AJAX的工作原理以及解決此問題的最佳方法的信息。 我的方法比jQuery駭客要復雜得多,但是它更具可維護性和組織性(不是jQuery的忠實粉絲)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM