親オブジェクトと子オブジェクトの関係を扱うウィザードまたは複数ステップのフォームを作成しようとしています。ステップ 1 で親オブジェクトを作成し、次にステップ 2 で最初の子オブジェクトを作成します。
モデル:
public class Company
{
[Key]
public int ID{get;set;}
public string CompanyName{get;set;}
public virtual List<Employee> Employees{get;set;}
}
public class Employee
{
[Key]
public int ID{get;set;}
public string EmployeeName{get;set;}
[ForeignKey("CompanyID")]
public Company EmployeeCompany{get;set;}
public int CompanyID {get;set;}
}
目標は、最初に会社情報を取得し、次に従業員情報に進む 2 段階のフォームを作成することです。これを処理するためにコントローラーをどのように設定しますか? 会社用に 2 つ、従業員用に 2 つのアクション結果を設定しますか。1 つの actionresult が空白/空のフォームを返し、2 番目の actionresult が HttpPost actionresult を処理します。
ActionResult CreateCompany()
{
//Send back a blank view to create the company
return View();
}
[HttpPost]
ActionResult CreateCompany(Company comp)
{
//Check comp.id to determine if it is add or update then save changes via entity framework
//Use newly created ID from database for next step
Return CreateEmployee(comp.id)
}
ActionResult CreateEmployee(int companyid)
{
//This is where I get stuck
//Do I create a new employee object and set the companyid
return View(); //Blank CreateEmployee View
}
[HttpPost]
ActionResult CreateEmployee(Employee employee)
{
//Add employee to company and save the company via entity framework
//Send to next page or next step of wizard
}
これには部分ビューを使用した方がよいでしょうか? たぶん、いくつかのjquery/ajaxを実行して、会社の作成を投稿し、従業員の作成を表示しますか?