2014-10-20 4 views
0

Я использую ASP.NET MVC .. Когда я отправляю свою форму, это вызывает ошибку при запуске, когда моя модель проверяет. Как можно установить мою модель просмотра или другой способ проверки?MVC MultiSelectList Binding

«Преобразование параметров из типа« 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> 

ответ

1

Вы пытаетесь опубликовать в ту же собственность, которая держит ваш список выбора. Опубликованный результат выборки в списке будет представлять собой строку с разделителями-запятыми выбранных значений параметра, которые модель-линкер не сможет привязать к свойству типа MultiSelectList.

Вам нужна дополнительная модель свойство удерживать размещенную значение, как:

public List<int> SelectedRoomIds { get; set; } 

И тогда, на ваш взгляд:

@Html.ListBoxFor(m => m.SelectedRoomIds, Model.Rooms, new { @class = "form-control" }) 

Кроме того, вам не нужно бросить Model.Rooms, так как он уже сильно типизирован.

Смежные вопросы