【问题标题】:Binding checkboxes MVC3 [duplicate]绑定复选框 MVC3 [重复]
【发布时间】:2013-07-10 16:19:46
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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>
    

    这可能并不完美,但它可以在您的道路上为您提供帮助。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 2020-06-27
      相关资源
      最近更新 更多