私はこのモデルを持っています:
public class Employee {
public int EmployeeId { get; set; }
[Required(ErrorMessage = "Employee Name is Required.")]
public string Name { get; set; }
public SkillSet SkillSet { get; set; }
}
public class SkillSet {
public int SkillSetId { get; set; }
public string ProgrammingLanguage { get; set; }
public int EmployeeId { get; set; }
public Employee Employee { get; set; }
}
フォームでレンダリングされたこの部分ビューを使用する:
@Html.HiddenFor(x => x.EmployeeId)
<div class="row">
<div class="span3"><strong>Name</strong></div>
<div class="span2">@Html.TextBoxFor(x => x.Name, new { @class = "" })</div>
</div>
@Html.HiddenFor(x => x.SkillSet.SkillSetId)
@Html.HiddenFor(x => x.SkillSet.EmployeeId)
<div class="row">
<div class="span3"><strong>Programming Skills</strong></div>
<div class="span2">@Html.TextBoxFor(x => x.SkillSet.Programming, new { @class = "" })</div>
</div>
投稿用に Employee の新しいインスタンスを返すことで get からフォームに入力しますが、新しいレコードを保存しようとすると、新しいレコードがSkillSet.SkillSetId
空であることに関して ModelState にエラーが発生します。
新しい親子レコードをデータベースに追加するために、ここで何が欠けていますか?
編集:私は今それを働かせました。私の問題は、フォームの非表示フィールドのレンダリングだけでした。非表示のフィールドを div に配置する必要がありましたが、それらは正常にレンダリングされ、ポストバックからデータを処理できました。