ASP.net MVC使用partials创建相关对象

时间:2012-05-04 19:34:14

标签: asp.net-mvc partial

我对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模态表单等中重用表单。

1 个答案:

答案 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