2014-10-20 58 views
0

我使用ASP.NET MVC ..當我發佈我的表單時,它會在我的模型驗證時引發轉換錯誤。如何修復我的視圖模型或其他驗證方式?MVC MultiSelectList綁定

「從類型'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,因爲它已經很強類型。