createPlayerビューを取得しました。それは動作し、私が保存した画像をロードします。ドロップダウンで1つの画像を選択し、そのIDをplayerImageIdに保存します。[HttpPost]
しかし、作成ボタンを押すと、両方のクラス(画像/プレーヤー)がコントローラーで空になります。
ビューに送信されるモデルは次のとおりです。
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
。