私はMVC3を初めて使用しますが、これまでのところ、コードをうまく処理することができました。
ここで、ユーザーが従業員の名前を表すテキスト文字列を入力できる簡単なフォームを作成したいと思います。次に、このフォームを送信して、モデルの一種のリストに保存します。その後、フォームが再表示され、for-eachループがすでに追加された名前を書き出します。完了して次に進むときは、この情報をデータベースに保存する必要があります。
私が理解できないのは、この一時的な情報をデータベースにプッシュするまで保存する方法です。提出するたびにプッシュすることはできますが、これは私に多くの頭痛の種を引き起こしました。
皆さんが私がやろうとしていることを見て、それに対する素晴らしい解決策を持っていることを願っています。:)
これは私がやろうとしていたことの単純化されたバージョンです:
モデル
public class OrderModel
{
public virtual ICollection<Employees> EmployeesList { get; set; }
public virtual Employees Employees { get; set; }
}
public class Employees
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
}
意見
@model OrderModel
@{
if (Model.EmployeesList != null)
{
foreach (var c in Model.EmployeesList)
{
@c.Name<br />
}
}
}
@using(Html.BeginForm())
{
@Html.TextBoxFor(m => m.Employees.Name)
<input type="submit" value="Add"/>
}
コントローラ
[HttpPost]
public ActionResult Index(OrderModel model)
{
model.EmployeesList.Add(model.Employees);
// This line gives me the error: "System.NullReferenceException: Object reference not set to an instance of an object."
return View(model);
}