Asp.net mvc Asp.net mvc如何将多个复选框值传递给控制器
我正在开发一个可以下载电子邮件的应用程序。在我看来,如果选中复选框,我想向控制器传递一个ID以下载此消息。我将尝试用代码解释:Asp.net mvc Asp.net mvc如何将多个复选框值传递给控制器,asp.net-mvc,Asp.net Mvc,我正在开发一个可以下载电子邮件的应用程序。在我看来,如果选中复选框,我想向控制器传递一个ID以下载此消息。我将尝试用代码解释: @using (Html.BeginForm("DownloadData", "Messages", FormMethod.Post)) { <table class="table table-bordered table-hover"> @for (int i = 0; i < Model.Co
@using (Html.BeginForm("DownloadData", "Messages", FormMethod.Post))
{
<table class="table table-bordered table-hover">
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td><input type="checkbox"
name="selectedIds[@i].messageID"/></td>
<td>@Model[i].messageFrom</td>
<td>@Model[i].messageSubject</td>
<td>@Model[i].messageDate</td>
</tr>
}
</table>
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Download" />
</div>
}
我认为这不难,但找不到解决办法。谢谢那些能帮忙的人 为了避免仅为此视图更改消息模型(或者如果您无法开始更改),我建议为此视图创建一个新模型,以处理如下选择:
public class MessageSelectionViewModel
{
public MessagesModels Message { get; set; }
public bool IsSelected { get; set; }
}
<td>@Html.CheckBoxFor(item => item[i].IsSelected)</td>
<td style="display:none;">@Html.HiddenFor(item => item[i].Message.Id)</td>
<td>@Model[i].Message.messageFrom</td>
<td>@Model[i].Message.messageSubject</td>
<td>@Model[i].Message.messageDate</td>
您的视图现在将是这些新视图对象的列表,因此看起来更像这样:
public class MessageSelectionViewModel
{
public MessagesModels Message { get; set; }
public bool IsSelected { get; set; }
}
<td>@Html.CheckBoxFor(item => item[i].IsSelected)</td>
<td style="display:none;">@Html.HiddenFor(item => item[i].Message.Id)</td>
<td>@Model[i].Message.messageFrom</td>
<td>@Model[i].Message.messageSubject</td>
<td>@Model[i].Message.messageDate</td>
@Html.CheckBoxFor(item=>item[i].IsSelected)
@Html.HiddenFor(item=>item[i].Message.Id)
@模型[i]。Message.messageFrom
@模型[i]。Message.messageSubject
@模型[i]。Message.messageDate
您的post方法将变成:
[HttpPost]
public ActionResult DownloadData(IEnumerable<MessageSelectionViewModel> selectedMessages)
{
foreach (int messageId in selectedMessages.Where(m => m.IsSelected == true).Select(m => m.Message.Id))
{
}
return View(...);
}
[HttpPost]
公共操作结果下载数据(IEnumerable selectedMessages)
{
foreach(selectedMessages.Where中的int messageId(m=>m.IsSelected==true)。Select(m=>m.Message.Id))
{
}
返回视图(…);
}
当然,如果这不是什么大问题,你可以节省一些时间和精力,只需像Stephen建议的那样将
IsSelected
添加到你的模型中。复选框的意义是什么?它不绑定到模型中的任何内容,甚至没有值
属性。如果要指示选择了哪些对象,请将bool IsSelected
属性添加到模型中,并使用@Html.CheckBoxFor(m=