在我的MVC项目,我有我的模型属性结合MultiSelectLists问题。 虽然我可以打通的FormCollection对象中的值,但这些都只是所选的ID。
以下是我的模型类,它代表了一个帖子。
public class PostModel
{
[Required(ErrorMessage = "Id is a required field")]
public int Id { get; set; }
[Required(ErrorMessage = "Post Title is required")]
[StringLength(500)]
public string Title { get; set; }
.......
public SelectList UnassignedTags { get; set; }
public SelectList AssignedTags { get; set; }
}
请注意,这只是一个模型类,并具有两个附加属性(UnassignedTags和AssignedTags)仅在屏幕上显示它们的目的和保持通话之间绑定的值。
单篇文章可以打上多个标签。 在我看来,我要两个多选择列表。 一位持有未分配标签(Text和Value)等保持被指定标签(Text和Value)。
在我看来,我表现出了使用下面的代码这些名单多选名单。
@Html.ListBox("UnassignedTagss", Model.UnassignedTags, new { @class = "form-control" })
@Html.ListBox("AssignedTagss", Model.AssignedTags, new { @class = "form-control" })
一切都OK了,当我加载屏幕上的记录。
加载后,我让表之间的用户移动的物品通过JavaScript。
当窗体被调回的版本问题来了。 我无法用我的模型属性绑定列表框的值。
以下是我的显示/编辑帖子记录操作方法。
public ActionResult PostDtls(int postId)
{
…..
}
[HttpPost]
public ActionResult PostDtls(PostModel post, FormCollection collection)
{
…….
}
有没有什么办法可以绑定ListBox的项目(无论选择与否)我的型号的SelectList性质即UnAssignedTags和AssignedTags?
目前,我通过JQuery的发布形式返回给服务器之前选择列表框中的所有项目。 这样一来,我得到逗号的FormCollection对象分开的ID。 然而,问题是,如果我不得不认为重新显示,因为无效的ModelState的用户,我必须从基础上的ID中的FormCollection对象可用的数据库中读取标签。 我知道,上述方案是坏的。 我需要知道实现这个要求的一个好方法。