1
我得到了我的createPlayer视图。它工作并加载我存储的图像。我想在下拉列表中选择一张图片并将该ID存储在我的playerImageId中。但是当按下创建按钮时,[HttpPost]
控制器中的两个类(图像/播放器)都是空的。创建对象时,我的类在viewModel中为空/空。 MVC,EF
模型,在发送给看法是这样的:
public ActionResult CreatePlayer()
{
var images = db.Image.ToList();
var playerViewModel = new PlayerViewModel(new Player(), images);
return View(playerViewModel);
}
的看法是这样的:
@model MariedalsIK.Models.PlayerViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Player</legend>
<div>
@Html.LabelFor(model => model.Image)
</div>
<div>
@Html.DropDownListFor(model => model.Image, Model.Image.Select(x => new SelectListItem
{
Text = x.ImageName,
Value = x.Id.ToString()
}))
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Player.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Player.Name)
@Html.ValidationMessageFor(model => model.Player.Name)
</div>
的PlayerViewModel看起来是这样的:
public class PlayerViewModel
{
public PlayerViewModel(Player player, IEnumerable<Image> images)
{
Player = player;
Image = images;
}
public Player Player { get; private set; }
public IEnumerable<Image> Image { get; private set; }
public PlayerViewModel()
{
}
}
而CreatePlayer动作如下所示:
[HttpPost]
public ActionResult CreatePlayer(PlayerViewModel playerViewModel)
{
if (ModelState.IsValid)
{
db.Player.Add(playerViewModel.Player);
db.SaveChanges();
return RedirectToAction("Teams");
}
return RedirectToAction("Teams");
}
的事情是,它的工作原理,如果我只向玩家[HttpPost]
的createPlayer,像这样:
[HttpPost]
public ActionResult CreatePlayer(Player player)
但在这种情况下,我没有得到imageId
。