私はこのコースに従います。インストラクターはレコードをDBに追加するコードを追加しました。 DBに追加することになるだろうクラスは次のようになります。フィールドは必須です。フィールドを記入した後でさえ - Validation
public class Gig
{
public int Id { get; set; }
public ApplicationUser Artist { get; set; }
[Required]
public string ArtistId { get; set; }
public DateTime DateTime { get; set; }
[Required]
[StringLength(255)]
public string Venue { get; set; }
public Genre Genre { get; set; }
[Required]
public byte GenreId { get; set; }
}
とマッピングを行うには、ビューに取り付けられており、それはこのようになりますビューモデルがあります:
public class GigFormViewModel
{
[Required]
public string Venue { get; set; }
[Required]
[FutureDate]
public string Date { get; set; }
[Required]
[ValidTime]
public string Time { get; set; }
[Required]
public byte Genre { get; set; }
[Required]
public IEnumerable<Genre> Genres { get; set; }
public DateTime GetDateTime() => DateTime.Parse($"{Date} {Time}");
}
は
私は、フォームフィールドを取得し、作成する方法を、持っている、とモデル自体にビューモデルからマッピングを行い、その後、DBにレコードを追加しようとすると、私の作成アクションは次のようになります。オン
[Authorize]
[HttpPost]
public ActionResult Create(GigFormViewModel viewModel)
{
viewModel.Genres = _context.Genres.ToList();
if (!ModelState.IsValid)
{
return View(viewModel);
}
var gig = new Gig()
{
GenreId = viewModel.Genre,
ArtistId = User.Identity.GetUserId(),
DateTime = viewModel.GetDateTime(),
Venue = viewModel.Venue
};
_context.Gigs.Add(gig);
_context.SaveChanges();
return RedirectToAction("Index", "Home");
}
ス私はviewModelのプロパティGenres
を取得し、DBからのレコードでそれを設定し、次にModelState.IsValid
をチェックします。しかし、それは私を与えている:私はちょうど2行以上に設定しますが
ジャンルフィールドは
が必要です。
ここに何か問題がありますか?どんな指導も高く評価されます。
ありがとうございました。
恐ろしい: 第二に、あなたのアクションメソッドは、以下のような特別
if
圏をリファクタリング。ヒントをありがとう! – brittanyようこそ。 – CodeNotFound
さらに、私のフォームを保存しようとしたとき、DateTime.Parse($ "{Date} {Time}")のエラーが発生しました。データは正しい形式ではありません: "18/11/2017 "、時間は" 2:35 "です。これに何が間違っているのか教えてください。ありがとうございました。 – brittany