【发布时间】:2016-11-02 07:22:49
【问题描述】:
Model.cs
一个活动可以有多个图像,这就是IEnumerable<int> ImageIdList的原因。
public class Campaign
{
public int Id { get; set; }
public int CreatedBy { get; set; }
public int UpdatedBy { get; set; }
public IEnumerable<int> ImageIdList { get; set; }
}
View.cshtml
我想根据ImageIdList 下载与活动相关的所有图像,这就是为什么我需要在选中特定活动并单击下载按钮时发布所有这些ImageIds。
@model Campaign
@{
Layout = "....";
var assets = Model.AssetsInCampaign.ToList();
}
@using (Html.BeginForm("action-method", "controller", FormMethod.Post))
{
<div class="btnSubmit">
<input type="submit" value="Download Asset(s)" />
</div>
@foreach(var i in assets)
{
<div class="s_checkcol">
<input type="checkbox" name="ids" />
@foreach (var imageId in i.Where(c => c.AssetId == doc.FileDataId).SelectMany(c => c.ImageIdList))
{
<input type="hidden" name="ids" value=@(imageId)>
}
</div>
}
}
Controller.cs
public ActionResult DownloadFiles(IEnumerable<int> ids)
{
// code
}
注意:这里只提供了一部分代码(我遇到的问题)。它是数据库优先的方法,我无法改变它(ORDERS)。
我尝试了上述方法,但无论选择了多少个复选框,所有ids 都会发布到控制器。
问题:我应该如何将IEnumerable<int> ImageIdList 属性绑定到View.cs 中的复选框并将数据发布到Controller.cs,以便仅发布选定复选框的ids?
【问题讨论】:
-
您认为复选框在哪里?
-
我的错!已编辑。 @Roma 就在
foreach循环上方。 -
您不能将
IEnumerable<int>绑定到复选框。复选框仅回发单个值。它不清楚你想做什么。发布所有 ID 的原因是因为您为每个 ID 创建了一个隐藏输入。你想为你的集合中的每个项目生成一个复选框 -
我怀疑你想要类似this answer
标签: c# asp.net-mvc razor checkbox