我在MVC中有双重列表框。所选列表框中所有项目的 ID 需要发布到服务器。模型定义了三个属性
IEnumerable<SelectListItem> AvailItems {get;set;}
IEnumerable<SelectListItem> SelectedItems {get;set;}
string SelectedItemIds {get;set;}
我已经填充了具有不同名称availItems
和属性的selectedItems
列表框SelectedItemIds
作为隐藏字段。如果用户从列表框中添加/删除项目,Javascript 会更新隐藏字段。在 httpost 中,我收到只是selectedItemIds
因为列表框的名称已更改,这是预期的行为。
问题是当模型无效或发生任何异常时,返回View(model)
被执行,列表框填充空值但hiddenfield
包含修改项的值。当用户再次提交页面时,来自hiddenfield
发布但显示的项目的值将来自 db。我遵循了这种hiddenfield
在提交之前使用而不是选择所有项目的方法(使用 javascript),因为如果非 js 用户提交页面,它不会造成伤害。来自的值hiddenfield
被拾取。
关于如何处理上述情况的任何想法?