MVC3-Trouble绑定复杂模型

时间:2013-04-03 05:42:14

标签: asp.net-mvc-3 asp.net-ajax model-binding asp.net-mvc-viewmodel

我需要使用 IList 地址更新公司类。这些是我的数据模型。

// 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操作中的Viewmodel中,并且我将数据从Viewmodel解压缩回控制器的POST操作中的Entity类。

以下是我的View Models。

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

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

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

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

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

有办法做到这一点吗?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

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

有很多可以执行ajax请求的javascript库。我更喜欢jQuery library

以下是一些关于如何使用mvc执行ajax的文章:

当然:http://bit.ly/XWYE5P