我使用ASP.NET MVC ..当我发布我的表单时,它会在我的模型验证时引发强制转换错误。如何修复我的视图模型或其他验证方式?
“从'System.String'类型到'System.Web.Mvc.SelectListItem'类型的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。” 谢谢..
//my view model
public class ProdGroupViewModel
{
//I've to fixed here or another way?
public IEnumerable<SelectListItem> Rooms { get; set; }
}
//controller
public ActionResult Create(int id)
{
return View(new ProdGroupViewModel
{
Rooms = new MultiSelectList(_roomService.GetAll(), "RoomId", "RoomName"),
});
}
//in my view
<div class="form-group">
<label class="col-md-3 control-label">Oda</label>
<div class="col-md-9">
@Html.ListBoxFor(model => model.Rooms, (MultiSelectList)Model.Rooms, new { @class = "form-control" })
</div>
</div>
答案 0 :(得分:2)
您尝试发布到包含您的选择列表的同一媒体资源。列表框中选择的发布结果将是所选选项值的逗号分隔字符串,模型绑定器将无法绑定到MultiSelectList
类型的属性。
您需要一个额外的模型属性来保存已发布的值,如:
public List<int> SelectedRoomIds { get; set; }
然后在你看来:
@Html.ListBoxFor(m => m.SelectedRoomIds, Model.Rooms, new { @class = "form-control" })
此外,您不需要投射Model.Rooms
,因为它已经是强类型的。