2013-07-10 94 views
2

我在我的dbml中有一個名爲Product的表。綁定複選框MVC3

在我的控制器我有以下LINQ ...

public ActionResult Index(int id) 
    { 
     using (orbitDataContext = new OrbitDataContext()) 
     { 
      var products = (from p in orbitDataContext.Products 
          where p.EventId == id 
          select p).ToList(); 

      return View(products); 
     } 
    } 

在我看來,我有以下...

@model IList<MVC.Product> 

@{ 
    ViewBag.Title = "Products"; 
} 

<h2>Products</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<p> 
    <input type="submit" value="Delete Selected" /> 
</p> 

@foreach (var item in Model) 
{ 
    <ul> 
     <li>@item.Description | @item.ProductCode | @item.Price</li> 
    </ul> 
} 

請有人可以解釋我怎麼能顯示一個複選框針對每個顯示的產品,用戶可以檢查多個產品,然後單擊一個按鈕,將選定的產品發送回我的控制器以便刪除它們。

回答

1

在我找到一個潛在的答案之前,只需幾個指針即可。

不要將您的域模型返回到視圖,而是使用視圖模型。

public class YourViewModel 
{ 
    public List<Product> Products { get; set; } 
} 

分開你的數據檢索,從你的控制器,這樣的事情:

public ActionResult YourActionMethod() 
{ 
    YourViewModel viewModel = new YourViewModel 
    { 
      Products = productService.FindAll() 
    } 

    return View(viewModel); 
} 

您認爲可以嘗試這樣的:

<ul> 
    @for (int i = 0; i < Model.Products.Count(); i++) 
    { 
      <li> 
       @Html.CheckBoxFor(x => x.Products[i].IsSelected) 
       @Html.DisplayFor(x => x.Products[i].Description) @Html.HiddenFor(x => x.Products[i].Description) 
       @Html.DisplayFor(x => x.Products[i].ProductCode) @Html.HiddenFor(x => x.Products[i].ProductCode) 
       @Html.DisplayFor(x => x.Products[i].Price) @Html.HiddenFor(x => x.Products[i].Price) 
      </li> 
    } 
</ul> 

這可能不是完美的,但它可以在你的路上幫助你。希望能幫助到你。