0

我需要用地址的IList更新公司类别。这些是我的数据模型。MVC3-故障绑定复杂模型

// Entity class Company — managed by Nhibernate 
public class Company 
{ 
    public virtual IList<Address> _addresses { get; set; } 

    public Company() 
    { 
    _addresses = new List<Address>(); 
    } 
} 

// Entity class Address — managed by Nhibernate 
public class Address 
{ 
    public virtual string line1 { get; set; } 
    public virtual string line1 { get; set; } 
} 

我打包从实体类视图模型中的数据在控制器的GET动作,而我在控制器的POST操作拆包从视图模型的数据传回的实体类。

这是我的视图模型。

// Class CompanyRequest 
public class CompanyRequest 
{ 
    public IList<AddressRequest> AddressRequests; 
} 

//Class AddressRequests 
public class AddressRequest 
{ 
    public string line1 { get; set; } 
    public string line1 { get; set; } 
} 

我正在使用局部视图来显示每个地址框。对于每个AddressRequest in AddressRequests我将该对象传递给部分视图,前缀设置正确。

for(var i = 0 ; i < AddressRequests.Count() ; i++) 
{ 
    ViewData["Prefeix"] = String.Format("AddressRequests[{0}]", i); 
    Html.RenderPartial("_addressPartial", AddressRequests[i]); 
} 

我需要能够添加一个“添加新地址”按钮,使用户可以添加新的地址到这个列表。这必须在不刷新页面的情况下完成。当用户点击那个按钮时,出现另一个地址框(相同的部分,我猜)。然后用户编辑该框并按下“保存”按钮。此保存按钮应保存整个公司数据,而不仅仅是地址

有没有办法做到这一点?任何帮助是极大的赞赏!

回答

1

答案是,您可以使用客户端技术(即javascript)在UI中动态加载其他地址,然后在数据准备好保存时通过ajax techniques将数据传回服务器端进行处理。

有大量的JavaScript库可以执行Ajax请求。我更喜欢jQuery library

下面是关于如何使用MVC执行Ajax了一些文章:

,当然还有:http://bit.ly/XWYE5P

+0

真的跛脚,刚发现stackoverflow的确如此不允许您发布指向Let Me Google That For You网站的链接。哦,好吧 –

+0

啊哈!找到一个解决方法利用URL压缩器= P它活着! http://bit.ly/XWYE5P –

+0

想通了。我所要做的就是使用AJAX链接异步点击控制器动作。很快就会发布我的整个代码,因为我认为没有任何地方你看到这样做**没有** jQuery。 –