我对 ASP 和 MVC 比较陌生,但到目前为止一切正常。我正在使用 DB first 方法并设置我的 DB 表(它是用 FK 等清理的现有 DB)。
我有一条 FK 路线:
Contact
- LettingContact
- Landlord
- Tenant
我希望能够使用部分来显示数据,例如 /Contact/_Create 将保存联系信息,即标题、名字、姓氏,并将由 /Contact/Create 和 /Tenant/Create 使用。我设法让它工作而不使用部分,而只是使用租户/创建 html 表单上的字段并显示模型中的相关数据。对于控制器中的租户/创建,我执行了以下操作(执行以下操作阻止了我在部分中获得空异常)
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 为空。部分不维护模型的任何原因?
另外,如果有更好的方法,请告诉我,因为这对我来说仍然很新。
我想使用 partials 的原因是它可以让我重用 jQuery 模态表单等中的表单。