加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将复选框添加到MVCcontrib Grid上的每一行

发布时间:2020-12-15 18:04:24 所属栏目:百科 来源:网络整理
导读:如何在MVCcontrib网格的每一行添加一个复选框.那么当表单发布时,会找出哪些记录被选中?寻找这个时候找不到很多东西. 谢谢 解决方法 以下是您可以如何处理: 模型: public class Product{ public int Id { get; set; } public string Name { get; set; } pu
如何在MVCcontrib网格的每一行添加一个复选框.那么当表单发布时,会找出哪些记录被选中?寻找这个时候找不到很多东西.
谢谢

解决方法

以下是您可以如何处理:

模型:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsInStock { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var products = new[]
        {
            new Product { Id = 1,Name = "product 1",IsInStock = false },new Product { Id = 2,Name = "product 2",IsInStock = true },new Product { Id = 3,Name = "product 3",new Product { Id = 4,Name = "product 4",};
        return View(products);
    }

    [HttpPost]
    public ActionResult Index(int[] isInStock)
    {
        // The isInStock array will contain the ids of selected products
        // TODO: Process selected products
        return RedirectToAction("Index");
    }
}

视图:

<% using (Html.BeginForm()) { %>
    <%= Html.Grid<Product>(Model)
            .Columns(column => {
                column.For(x => x.Id);
                column.For(x => x.Name);
                column.For(x => x.IsInStock)
                      .Partial("~/Views/Home/IsInStock.ascx");
            }) 
    %>
    <input type="submit" value="OK" />
<% } %>

部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.Models.Product>" %>
<!-- 
    TODO: Handle the checked="checked" attribute based on the IsInStock 
    model property. Ideally write a helper method for this
-->
<td><input type="checkbox" name="isInStock" value="<%= Model.Id %>" /></td>

最后,这里是一个帮助程序,您可以使用它来生成此复选框:

using System.Web.Mvc;
using Microsoft.Web.Mvc;

public static class HtmlExtensions
{
    public static MvcHtmlString EditorForIsInStock(this HtmlHelper<Product> htmlHelper)
    {
        var tagBuilder = new TagBuilder("input");
        tagBuilder.MergeAttribute("type","checkbox");
        tagBuilder.MergeAttribute("name",htmlHelper.NameFor(x => x.IsInStock).ToHtmlString());
        if (htmlHelper.ViewData.Model.IsInStock)
        {
            tagBuilder.MergeAttribute("checked","checked");
        }
        return MvcHtmlString.Create(tagBuilder.ToString());
    }
}

这简化了部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNamespace.Models.Product>" %>
<td><%: Html.EditorForIsInStock() %></td>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读