c# - 如何从 ListBoxFor 中选择多个项目并传递给控制器 Post 方法
问题描述
如何在列表框中选择多个将传递给控制器的 Postmodel
参数的项目?我可以通过按住 CTRL 物理选择多个,但是当我提交时,我收到验证错误消息,“字段 TagId 必须是一个数字。” 它只提交选择了一项。
列表框
@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; }
}
索引.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>
结果:
推荐阅读
- google-app-engine - 特定版本的 Google App Engine 自定义子域映射
- javascript - 使用 IndexedDB 作为浏览器内缓存。我做对了吗?
- kotlin - Java 到 Kotlin 数组的转换,为什么在不同的场景中会有所不同?
- nodemon - 使用npm在nodejs中安装nodemon的问题
- amazon-web-services - AWS X-Ray:如何通过 Lambda --> SNS --> Lambda 传播 TraceId?
- ios - Ellysis 蓝牙嗅探 Apple Airpods
- html - 如何使用浏览器访问受限网站区域(权限设置为 700)?
- c++ - inline 和 __attribute__ inline 有什么区别?
- java - 如何按优先级迭代?
- android - new NotificationCompat.Builder(Context) - 如何从 url 设置大图标()