2010-01-15 53 views
0

我們使用asp.net mvc並且在選擇批准訂單列表時遇到麻煩。ASP.net MVC只獲取選定的行(複選框)

通過選擇每個訂單的複選框來批准訂單。

如..

訂單ID產品被批准 1本書(取決於如果用戶選擇複選框或不) 2筆(取決於如果用戶選擇複選框或不)

所以目前我們做這樣的事情:想知道是否有implementating

查看一個更好的辦法:

我們的假(被微軟視爲產生)

對郵政控制器的操作方法:通過訂單 我們循環(這是Order對象的列表)響應 (訂單ID)=真,假的:那麼我們選擇的順序,或者我們不選擇

但是你看我們要避免在控制器中寫入那個邏輯。

有沒有想法?

回答

1

最近,我回答了類似的問題:

ASP.NET MVC Checkbox Group

你可以那樣做(這將是propable foreach循環):

<% int i = 0; foreach(Order o in Model.Orders) { %> 
<%= Html.CheckBox("orders[" + i + "].Checked") %> 
<%= Html.Hidden("orders[" + i "].ID",Order[i].ID) %> 
<%= Html.Hidden("orders[" + i + "].Checked",false) %> 
<% ++i; } %> 

你的POST方法將:

[HttpPost] 
public ActionResult Test(OrdersSelection[] orders) 
{ 
    var selectedOrders = orders.Where(o => o.Checked); 
    return View(); 
} 

和模型將

public class OrdersSelection 
{ 
    public bool Checked { get; set; } 
    public bool ID { get; set; } 
} 
0
public virtual ActionResult MyAction(FormCollection fVals) 
{ 

    var q = from x in fVals.AllKeys 
      where fVals[x] != "false" 
      select x; 
    var ids = q.ToList(); 


    // take id and call service with filter 
    var result = this.myService.FilterResultByID(ids); 


    // then return model 
    return View(result); 


} 
0

你可以通過添加/從一個單一的隱藏輸入刪除訂單ID作爲用戶蜱/ unticks做在客戶端腳本。根據需要使用數組push/splice,並使用join存儲在隱藏字段中。
然後控制器只需讀取一個響應值即可獲得(逗號分隔?)選定訂單ID列表。