如何解决如何从ListBoxFor中选择多个项目并传递给控制器的Post方法
如何在列表框中选择多个项目,这些项目将传递到控制器的Post model
参数?
我可以通过按住CTRL来物理选择多个,但是在提交时,我收到验证错误消息,“字段TagId必须为数字。”它只会在选中一项的情况下提交。
Create View Form showing multiple items selected
列表框
@Html.ListBoxFor(model => model.allTags[0].TagId,new SelectList(Model.allTags,"TagId","Name"),new { @class = "form-control",@Id = "SelectTags",@style = "width:200px;height:300px;" })
控制器Post方法
[HttpPost]
public ActionResult Create(CreateRecipe model)
{
try
{
// Todo: Add insert logic here
return RedirectToAction("ViewRecipes");
}
catch
{
return View();
}
}
谢谢
解决方法
您可以尝试以下代码从ListBoxFor中选择多个项目,并将其传递给控制器的Post方法。
控制器:
public class TestController : Controller
{
// GET: Test
public ActionResult Index()
{
var model = new UserModel
{
SelectedTeaIds = new[] { 3 },TeaList = GetAllTeaTypes()
};
return View(model);
}
[HttpPost]
public ActionResult Index(UserModel model)
{
model.TeaList = GetAllTeaTypes();
if (model.SelectedTeaIds != null)
{
List<SelectListItem> selectedItems = model.TeaList.Where(p => model.SelectedTeaIds.Contains(int.Parse(p.Value))).ToList();
foreach (var Tea in selectedItems)
{
Tea.Selected = true;
ViewBag.Message += Tea.Text + " | ";
}
}
return View(model);
}
public List<SelectListItem> GetAllTeaTypes()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "General Tea",Value = "1" });
items.Add(new SelectListItem { Text = "Coffee",Value = "2" });
items.Add(new SelectListItem { Text = "Green Tea",Value = "3" });
items.Add(new SelectListItem { Text = "Black Tea",Value = "4" });
return items;
}
}
型号:
public class UserModel
{
public int[] SelectedTeaIds { get; set; }
public IEnumerable<SelectListItem> TeaList { get; set; }
}
Index.cshtml:
@using WebApplication1.Models
@using System
@model UserModel
@{
ViewBag.Title = "Index";
}
<b>Select Tea Type: </b>
<br />
@using (Html.BeginForm("Index","Test",FormMethod.Post))
{
<b>Select Tea Type: </b>
<br />
@Html.ListBoxFor(x => x.SelectedTeaIds,Model.TeaList,new { style = "width:200px" })
<br />
<input type="submit" value="submit" />
}
<h4>You Selected</h4>
<b style="color:red">Tea Type: @ViewBag.Message</b>
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。