Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 带有实体框架的Asp.net mvc问题:创建或更新联系人地址。用Ajax请求填充地址_Asp.net Mvc_Ajax_Entity Framework_Asp.net Mvc 2_Entity Framework 4 - Fatal编程技术网

Asp.net mvc 带有实体框架的Asp.net mvc问题:创建或更新联系人地址。用Ajax请求填充地址

Asp.net mvc 带有实体框架的Asp.net mvc问题:创建或更新联系人地址。用Ajax请求填充地址,asp.net-mvc,ajax,entity-framework,asp.net-mvc-2,entity-framework-4,Asp.net Mvc,Ajax,Entity Framework,Asp.net Mvc 2,Entity Framework 4,我有两个相关实体:联系人和地址。彼此之间有一种关系。1个联系人,1个地址 在create表单中,我填写FirstName和LastName文本框。我有一个与地址相关的字段 在某些情况下,我会执行AJAX请求来自动填充地址信息 问题是:当我单击save时,会创建一个新的地址条目,而不仅仅是将联系人与AJAX请求提供的AddressID相关联 理想的行为是,如果AddressID为空,则保存一个新的地址条目。如果AddressID不是空的,只需将其关联即可 <%: Html.TextBoxFo

我有两个相关实体:联系人和地址。彼此之间有一种关系。1个联系人,1个地址

在create表单中,我填写FirstName和LastName文本框。我有一个与地址相关的字段

在某些情况下,我会执行AJAX请求来自动填充地址信息

问题是:当我单击save时,会创建一个新的地址条目,而不仅仅是将联系人与AJAX请求提供的AddressID相关联

理想的行为是,如果AddressID为空,则保存一个新的地址条目。如果AddressID不是空的,只需将其关联即可

<%: Html.TextBoxFor(model => model.ContactInfo.FirstName)%>
<%: Html.TextBoxFor(model => model.ContactInfo.LastName)%>

<%:Html.TextBoxFor(model => model.ContactInfo.Address.AddressID)%>    
<%:Html.TextBoxFor(model => model.ContactInfo.Address.City)%>        
<%:Html.TextBoxFor(model => model.ContactInfo.Address.Street)%>    
你是说:

    ContactInfo.IsActive = true;
    if (ContactInfo.HasValue)
    {
        ContactInfo.Address = _db.Addresses.Single(a => a.AddressID == ContactInfo.Address.AddressID);
    }
    _db.AddToContacts(ContactInfo);
    _db.SaveChanges();
?

使用FK关联(可选),在EF 4中,您还可以执行以下操作:

    ContactInfo.IsActive = true;
    if (ContactInfo.HasValue)
    {
        ContactInfo.Address = null;
        ContactInfo.AddressID = ContactInfo.Address.AddressID;
    }
    _db.AddToContacts(ContactInfo);
    _db.SaveChanges();

@p、 坎贝尔:谢谢你的帮助。我的英语不是很好。谢谢,你能发布保存实体的代码吗?我使用FK和EF4。我关心的是,当我用ajax请求填充地址信息并按下Save按钮时,它会保存一个新条目,而不仅仅是用ajax响应关联AddressID。我理解。你试过我的建议了吗?谢谢,它起作用了。诀窍是当您不想保存新地址时,将地址设置为Null。
    ContactInfo.IsActive = true;
    if (ContactInfo.HasValue)
    {
        ContactInfo.Address = null;
        ContactInfo.AddressID = ContactInfo.Address.AddressID;
    }
    _db.AddToContacts(ContactInfo);
    _db.SaveChanges();