私は ASP と MVC に比較的慣れていませんが、これまでのところ問題ありません。私はDBファーストのアプローチを使用しており、DBテーブルをすべてセットアップしています(FKなどでクリーンアップされた既存のDBです)。
私はFKのルートを持っています:
Contact
- LettingContact
- Landlord
- Tenant
パーシャルを使用してデータを表示できるようにしたいと考えています。たとえば、/Contact/_Create は連絡先情報、つまり役職、名、姓を保持し、/Contact/Create と /Tenant/Create の両方で使用されます。パーシャルを使用せずに、Tenant/Create html フォームのフィールドを使用して、モデルから関連データを表示するだけで機能させることができました。コントローラーのテナント/作成に対して、次のことを行いました(次のことを行うと、部分的にnull例外が発生しなくなりました)
Tenant tenant = new Tenant();
LettingsContact lettingsContact = new LettingsContact();
Contact contact = new Contact();
tenant.LettingsContact = letContact;
tenant.LettingsContact.Contact = contact;
return View(tenant)
今、ビューは
//using Html.BeginForm etc
@{
Html.RenderPartial("../Contact/_Create", Model.LettingsContact.Contact);
Html.RenderPartial("_Create", Model);
}
<input type="submit" value="create">
//rest of html
送信ボタンをクリックすると、/Tenant/Create 投稿イベントに移動します。
[HttpPost]
public ActionResult Create(Tenant tenant)
{
if (ModelState.IsValue)
{
tenant.ContactID = Guid.NewGuid();
tenant.LettingsContact.Contact.ContactID = tenant.ContactID;
db.Tenants.AddObject(tenant);
db.SaveChanges();
return RedirectToAction("Index");
}
}
ただし、tenant.LettingContact.Contact.ContactID
クラッシュを読み取る行は、LettingsContact に対する NullReferenceException が null になります。パーシャルがモデルを維持していない理由は何ですか?
また、これを行うためのより良い方法があれば、これは私にとってまだ非常に新しいのでお知らせください。
パーシャルを使用する理由は、フォームを jQuery モーダル フォームなどで再利用できるようにするためです。