私はコードの最初のデータベースを持っています。表には、問題は私が作成しようとするたびにgetメソッドコードの最初の1対1リレーションシップとMVCの作成問題
public ActionResult Create()
{
ViewBag.Id = new SelectList(db.Deadline, "Id", "Id");
var Year = new Year(db.Year.OrderByDescending(x => x.Value).FirstOrDefault().Value + 1);
Year.Deadline = new Deadline(Year);
return View(Year);
}
とPOSTメソッド
[HttpPost]
public ActionResult Create(Year year)
{
if (ModelState.IsValid)
{
if (db.Year.Select(x => x.Value).Contains(year.Value))
{
ModelState.AddModelError("AlreadyExists", "That year has already been added to the database, please edit instead");
return View(year);
}
db.Year.Add(year);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(year);
}
を作成した年のためのコントローラを持って
public class Deadline
{
public Deadline() { }
public Deadline(Year year)
{
this.Year = year;
}
public Guid Id { get; set; }
[Required]
public Year Year { get; set; }
[Required]
[DataType(DataType.Date)]
[DataAnnotationsExtensions.Date]
public DateTime From { get; set; }
[Required]
[DataType(DataType.Date)]
[DataAnnotationsExtensions.Date]
public DateTime To { get; set; }
}
public class Year
{
public Year(Int32 value) { this.Value = value; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
[Display(Name="Year")]
[DataAnnotationsExtensions.Year]
public Int32 Value { get; set; }
public virtual Deadline Deadline { get; set; }
}
ある私を引き起こし新しい年(年の値と締め切りの日付を設定しています)、それはポストに戻って、モデル状態は無効です。
[年]フィールドは必須です。
私がチェックしたとPOSTメソッドでyear.Deadline.Yearは、それがさえ
を入れ、狂気私を運転している理由(とどのように私はこの問題を解決することができます)私が知りたいことはあり、実際にnullであります@{ Model.Deadline.Year = Model; }
は表示されませんでした。
編集、次の作品
using (ProjectSelectionAndAllocation.Models.DatabaseContext Context = new Models.DatabaseContext())
{
var h = new Models.Year(1001);
h.Deadline = new Models.Deadline(h);
Context.Year.Add(h);
Context.SaveChanges();
}
変更前に表示されていた場合は、私がタグ付けしていた間に何らかの理由でミスマッチがありました。 – Manatherin
Model.Deadline.Year =モデルが有効ではないようです。モデルは一年ではないですね。ビューの元のコードは何ですか? – CodeRedick
モデルは年、コントローラーは年とその@model Namespace.Models.Year、元のコードを変更していないのは、ビューを設定しているかどうかを確認するための行です。 – Manatherin