繁体   English   中英

获取由foreach循环mvc生成的选中复选框

[英]Get checked checkboxes generated by foreach loop mvc

我将检查的复选框放入我的mvc控制器并将其保存在数据库中时遇到问题。 我在创建视图中为每个循环生成了我的列表。

我的广告类:

    public class Advert
  {
    public int AdvertId { get; set; }
    public int SponsorId { get; set; }
    [DisplayName("Amount")]
    public int Amount { get; set; }


    [DisplayName("Start date")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yy}")]
    [DataType(DataType.Date)]
    public System.DateTime StartDate { get; set; }

    [DisplayName("End date")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yy}")]
    public DateTime EndDate { get; set; }

    public List<Continent> Continents { get; set; }
    public List<Country> Countries { get; set; }
    public List<Sport> Sports { get; set; }
    public Gender Gender { get; set; }
    public Sponsor Sponsor { get; set; }
    public int SponsorTypeId { get; set; }
  }

(部分)创建视图

    <div class="editor-label">
    @Html.LabelFor(model => model.SponsorId, "Select sport")
</div>

<div class="editor-field">
    @foreach (var item in Model.Sports)
    {
            <tr>
                <td>
                    <input type="checkbox" id="@item.SportId" name="SelectedSport" value="@item.SportId"/>
                </td>
                <td>
                    @item.SportName
                </td>
            </tr> <br />  
    }   
</div>

AdvertController

// POST: /Advert/Create
[HttpPost]
public ActionResult Create(Advert advert)
{
  ViewBag.SponsorId = new SelectList(db.Sponsors, "SponsorId", "SponsorCompany", advert.SponsorId);
  advert.SponsorTypeId = service.sponsorType(advert.Amount);   

    if (ModelState.IsValid)
    {
      db.Adverts.Add(advert);
      db.SaveChanges();
      return RedirectToAction("Index");
    }

    return View(advert);
}

我暂时坚持这一点,所以欢迎任何帮助!

如果您只是想抓住ID,那么最直接的方法是使用命名参数。

<input type="checkbox" id="myParams" name="myParams" value="@item.SportId"/>

然后只需更改您的定义以按名称提取该列表

public ActionResult Create(Advert advert, string[] myParams)

当模型中没有这样的字段时,您如何期望模型绑定器绑定SelectedSport表单值? 您需要将它添加到Advert类中:

public IEnumerable<String> SelectedSport { get; set; }

然后应使用所选复选框的值填充此值。

此外,您似乎直接在视图中使用数据库实体。 这不好! 您应该创建一个单独的AdvertViewModel类,并使用控制器中所需的值填充它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM