2013年12月2日 星期一

ASP.NET MVC 使用政府公開資料 Part.2 - 增加條件過濾

在「ASP.NET MVC 使用政府公開資料 Part.1」這一篇文章裡我們使用 ASP.NET MVC 透過 HttpClient 取得新北市政府公開資料的「WiFi 熱點」資料,最後將取得的資料存放於 SystemRuntime.Cache 類別的快取當中,這一系列的操作都是使用 Async/Await 非同步的方式來做處理。

因為我們所取得的是原始的資料,上千筆的資料一次全部顯示還真的看不太清楚,所以我們可以就所取得的資料來進行篩選,在頁面上增加條件過濾的選項,讓使用者可以藉由條件過濾來取得更精確的內容。

 


這一篇其實算是基本操作的練習,先做好下一篇文章的事前準備工作,這一篇要做的是在頁面上增加三個下拉選單,分別是:「區域」「熱點分類」「業者」,而這三個下拉選單的項目內容一樣是從「WiFi熱點」資料裡的欄位取得,在 Controller 裡增加三個取得資料的 Method,

區域

image

熱點分類

image

業者

image

上面作為條件過濾的三個下拉選單 Methods(DistrictSelectList, TypeSelectList, CompanySelectList)其實程式內容都差不多,所以我們可以另外建立一個 Method 然後共用,

image

在 Index Action 方法裡加上取得這三個下拉選單資料的程式,Index Action 方法增加三個參數以及進行條件過濾的處理,

public async Task<ActionResult> Index(string districts, string types, string companys)
{
    //區域
    ViewBag.Districts =
        await this.GetSelectList(await this.GetDistricts(), districts);
    ViewBag.SelectedDistrict = districts;
 
    //熱點分類
    var typeSelectList = 
        await this.GetSelectList(await this.GetHotSpotTypes(), types);
    ViewBag.Types = typeSelectList.ToList();
    ViewBag.SelectedType = types;
 
    //業者
    var companySelectList = 
        await this.GetSelectList(await this.GetCompanys(), companys);
    ViewBag.Companys = companySelectList.ToList();
    ViewBag.SelectedCompany = companys;
 
    var source = await this.GetHotSpotData();
    source = source.AsQueryable();
 
    if (!string.IsNullOrWhiteSpace(districts))
    {
        source = source.Where(x => x.District == districts);
    }
    if (!string.IsNullOrWhiteSpace(types))
    {
        source = source.Where(x => x.Type == types);
    }
    if (!string.IsNullOrWhiteSpace(companys))
    {
        source = source.Where(x => x.Company == companys);
    }
 
    return View(source.OrderBy(x => x.District).ToList());
}

調整檢視頁面,增加表單以及三個下拉選單,

image

執行結果

image

image

 

這一篇就說到這邊,而下一篇則是要做分頁功能。

 

以上

2 則留言:

  1. 請問版主程式字體顏色在哪設定?看你的程式感覺好清楚,謝謝

    回覆刪除
    回覆
    1. http://kevintsengtw.blogspot.tw/p/visual-studio.html

      換個好字型讓程式開發有效率
      Visual Studio 2013 佈景主題與 Code Style
      Visual Studio - 使用 Twainsoft StudioStyler 快速更換 Style

      刪除

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。