ViewModel добавление пользовательского класса в другой класс - PullRequest
0 голосов
/ 20 февраля 2012

Я создал эту модель представления:

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.Я изменил это много раз, я пытался с помощью словаря и других способов, но всегда есть некоторые проблемы.Поэтому я хочу попросить лучший способ добавить пользовательский класс User в класс Player.Класс игрока:

public class Player
    {
        // pokud použijeme virtual a vlastností tak nám EF rozšíří o další možnosti jako lazy loading a další
        [Key]
        public int PlayerID { get; set; }

        [Required]
        public string Name { get; set; }
        [Required]
        public string Surname { get; set; }

        public string PhotoUrl { get; set; }

        public string Post { get; set; }

        public virtual Team Team { get; set; }

        public virtual User User { get; set; }
        // public int UserID { get; set; }

        //public virtual ICollection<Article> Articles { get; set; }
        // Here could be next things as number, ...

    }

Спасибо

1 Ответ

1 голос
/ 20 февраля 2012

Используйте этот конструктор вместо: http://msdn.microsoft.com/en-us/library/dd505286.aspx

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

Примерно так:

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