我对ASP和MVC比较陌生,但到目前为止还不错。我正在使用数据库优先的方法,并有我的数据库表所有设置(这是一个现有的数据库清理与FKs等)。
我有一条FKs的路由:
Contact
- LettingContact
- Landlord
- Tenant我希望能够使用分词来显示数据,例如,/ Contact /_Create将保存联系信息,即头衔、名字、姓氏,并将由/Contact/Create和/Tenant/Create使用。我设法让它正常工作,不使用分词,只使用Tenant/Create html表单上的字段,并显示模型中的相关数据。对于控制器中的租户/Create,我执行了以下操作(执行以下操作会阻止我在partial中获得空异常)
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现在,当我单击submit按钮时,它转到我的/Tenant/Create post事件。
[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 crashes的行将显示指向LettingsContact的NullReferenceException为空。有没有什么原因可以解释为什么偏导没有维护模型?
另外,如果有更好的方法,请让我知道,因为这对我来说仍然是非常新的。
我想使用分词的原因是,它可以让我在jQuery、模态表单等中重用表单。
发布于 2012-07-08 16:44:13
如果希望窗体回发不希望在页面上显示的信息,则应使用隐藏字段。看看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
https://stackoverflow.com/questions/10455071
复制相似问题