【发布时间】:2015-03-19 21:26:49
【问题描述】:
我很难从 MultiSelectList 中捕获发布的值。当页面加载时,选择列表控件会从我的模型中的列表成功填充。但是当表单提交时,模型列表为空。
这些属性在我的“联系人”模型中。 Contact 对象只有一个 ExternalUserID (int) 和一个 PublicName (string) 属性。
public List<Contact> AvailableContacts { get; set; }
public List<Contact> SelectedContacts { get; set; }
这些控件在我的表单上。
@Html.ListBoxFor(m => m.AvailableContacts,
new MultiSelectList(Model.AvailableContacts, "ExternalUserID", "PublicName", null),
new { @class = "form-control", size = "15" })
@Html.ListBoxFor(m => m.SelectedContacts,
new MultiSelectList(Model.SelectedContacts, "ExternalUserID", "PublicName", null),
new { @class = "form-control", size = "15" })
这是我的控制器。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EditContacts(Contacts model)
{
if (ModelState.IsValid)
{
// Code to save omitted for clarity.
}
return View(model);
}
这可能需要一些简单的调整,并且之前可能已经被问过,但是我没有找到关于 SO 的解决方案或在线的简洁示例。如果您倾向于将此标记为重复,请附上一个简洁示例的链接。
感谢您的帮助。
【问题讨论】:
-
Contact和Contacts有什么区别?您有一个Contact的列表,但该方法中预期的模型是Contact?也许该方法应该期望Contact? -
您是否使用 fiddler 或类似的工具检查了实际通过通道发送的内容?
标签: c# asp.net-mvc forms http-post