2017-05-12 109 views
0

我遇到了一些數據過濾問題;我希望從下面的下拉菜單中能夠通過批准或不批准顯示項目列表。MVC 5 @ Html.ActionLink

當用戶創建一個新項目時,其中一個字段是「批准」,這是一個布爾值。該複選框未被選中,當項目啓動時,用戶將該複選框選作批准的項目。

基本上,我想,當用戶選擇「已批准」選項時,將被重定向到已批准項目的列表。

我該怎麼做?

  <li class="dropdown"> 
 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Project Execution <span class="caret"></span></a> 
 
       <ul class="dropdown-menu"> 
 
       <li> @Html.ActionLink("Approved", "Index", "NEWPROJECTs")</li>      
 
       <li role="separator" class="divider"></li> 
 
       <li>@Html.ActionLink("On Going", "Index", "NEWPROJECTs")</li> 
 
       <li role="separator" class="divider"></li> 
 
       <li>@Html.ActionLink("List", "Index", "PROJECTEXECUTIONs")</li> 
 
      </ul> 
 
     

回答

1

使用路由參數

如果你有一個處理這些操作中的一個或多個單個控制器的動作,那麼你可能需要提供一個路徑值確定你應該過濾的數據:

public ActionResult NewProjects(string filter) 
{ 
    // Check the filter that was used and filter the content that you 
    // will pass to the view accordingly 

    // Get your projects prior to filtering 
    var projects = _context.Projects; 

    switch (filter) 
    { 
     case "ONGOING": 
      projects = projects.Where(p => p.Status == "ONGOING"); 
     break;  
     default: 
      projects = projects.Where(p => p.Status == "APPROVED"); 
     break; 
    } 

    return View(projects); 
} 

然後,當你建立你的動作鏈接,只需指定filter作爲路由值,這樣你的控制器動作會消耗它,並正確地過濾數據:

<li> 
    @Html.ActionLink("Approved", "Index", "NEWPROJECTs", new { filter = "APPROVED"}) 
</li>      
<li role="separator" class="divider"></li> 
<li> 
    @Html.ActionLink("On Going", "Index", "NEWPROJECTs", new { filter = "ONGOING"}) 
</li> 
+0

我真的很感謝你的幫助,但我不明白是什麼「_context」... – tps

+0

這只是一個示例,可能表明您如何填充數據(可能是任何東西,只是出於示例目的),您可以使用純SQL/ADO.NET調用輕鬆替換所有這些調用。 –