我对ASP和MVC相对较新,但到目前为止还没有。我正在使用数据库第一种方法并让我的数据库表全部设置(它是用FK清理的现有数据库等)。
我有一条FK路线:
Contact
- LettingContact
- Landlord
- Tenant
我希望能够使用partials来显示数据,例如/ Contact / _Create将保存联系信息,即Title,Forename,Surname,并将由/ Contact / Create和/ Tenant / Create使用。我设法让它工作不使用部分,只使用租户/创建html表单上的字段,并显示模型中的相关数据。对于控制器中的Tenant / Create,我做了以下操作(执行以下操作阻止了我在部分中获得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
现在当我点击提交按钮时,它会转到我的/租户/创建帖子事件。
[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。部分人没有维护模型的原因是什么?
此外,如果有更好的方法,请告诉我,因为这对我来说仍然是一个新的。
我想使用partials的原因是它可以让我在jQuery模态表单等中重用表单。
答案 0 :(得分:1)
如果您希望表单回发您不希望在页面上显示的信息,则应使用隐藏字段。请查看Html.Hidden()
和Html.HiddenFor()
。
隐藏在msdn:http://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.hidden.aspx
msdn上的HiddenFor:http://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.hiddenfor.aspx