2

我的 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> 
}

请有人解释我如何针对显示的每个产品显示一个复选框,以便用户可以检查多个产品,然后单击一个按钮,将所选产品发送回我的控制器,以便我删除它们。

4

1 回答 1

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>

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

于 2013-07-11T08:28:37.033 回答