2012-02-20 39 views
0

我創造了這個視圖模型:視圖模型添加自定義類,其他類

public class PlayerViewModel 
{ 
    PlayerRepository repo = new PlayerRepository(); 

    public Player Player { get; set; } 
    public int SelectedUserID { get; set; } 
    public SelectList Users { get; set; } 


    public PlayerViewModel() 
    { 
     Player = new Player(); 
    } 
    public PlayerViewModel(int id) 
    { 
     Player = repo.Retrieve(id); 
     Users = new SelectList(repo.GetUsers()); 
     SelectedUserID = 0; 
    } 
} 

這個我有看法:

@Html.DropDownListFor(x => x.SelectedUserID, Model.Users) 
     @Html.ValidationMessageFor(x => x.SelectedUserID) 

,這在控制器:

[Authorize] 
     public ActionResult Upravit(int id) 
     { 
      var playerview = new PlayerViewModel(id); 
      return View(playerview); 
     } 
     [Authorize,HttpPost] 
     public ActionResult Upravit(int id, PlayerViewModel playerView) 
     { 
      if (ModelState.IsValid) 
      { 
       playerView.Player.User = usRepo.GetUserById(playerView.SelectedUserID); 
       repo.Save(playerView.Player); 
       return RedirectToAction("Podrobnosti", new { id = playerView.Player.PlayerID }); 
      } 
      return View(playerView); 
     } 

現在我有問題「該字段SelectedUserID必須是一個數字。」我在下拉列表UserName。我修改了很多次,我用Dictionary和其他方法嘗試過,但每個方面都有一些問題。所以我想要求最好的方式來將自定義類User添加到類Player中。 Player類:

​​

感謝

+0

您的視圖模型擁有(的)庫? – 2012-02-20 17:45:28

+0

我在一些文章中發現它。猜猜我應該改變它 – 2012-02-20 17:51:41

回答

1

使用此構造函數來代替: http://msdn.microsoft.com/en-us/library/dd505286.aspx

public SelectList(
    IEnumerable items, 
    string dataValueField, 
    string dataTextField 
) 

事情是這樣的:

Users = new SelectList(repo.GetUsers(),"UserID", "UserName"); 
+0

現在我有保存播放器的問題。它說與IEntityChangeTracker錯誤,並且我不能指向具有更多實例的對象實體。 – 2012-02-20 18:17:47

+0

不要認爲它與這個問題有關。這也許:http://stackoverflow.com/questions/620084/how-to-get-rid-off-an-entity-object-cannot-be-referenced-by-multiple-instances – 2012-02-20 18:24:40