绑定复选框MVC3

时间:2013-07-10 16:19:46

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 checkbox

我的dbml中有一个名为Product的表。

在我的控制器中,我有以下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 个答案:

答案 0 :(得分: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>

这可能不完美,但它可以帮助你。希望它有所帮助。