单视图一对多关系

时间:2017-01-04 15:48:47

标签: c# asp.net-mvc

我有两个模型MainTransaction和SubTransaction

public class MainTrasaction{

 public int id{get;set;}
 public DateTime transDate{get;set;}
 public String transCode{get;set;}
 public String TransPoster{get;set;}
 public ICollection<SubTransaction>{get;set;}
}

public class SubTransaction{
public int id{get;set;}
public int MainTransId{get;set;}
public double debit{get;set;}
public double credit{get;set;}

}

我希望以这种方式组合两个模型,在单个创建表单中,将有一行MainTransaction和多行SubTransaction。所以我创建了一个ViewModel

public class Voucher{
public MainTransaction mt{get;set;}
public List<SubTransaction> st {get;set}

}

这个ViewModel的目的是处理一个Entry Form的创建,其中可以同时插入MainTransaction和SubTransaction的多个记录的单个记录。但是,在制作了上述视图模型后,我无法将其合并到我的视图中。任何建议的人。我该怎么办。

这是控制器动作

public ActionResult GenerateVoucher(){

return View();
}

和视图

@model VoucherProject.Models.Voucher

@Html.TextBoxFor(m=>m.MainTransaction.transDate)
// And so on for all the MainTransaction fields
// SubTransaction.. Not sure who to proceed
/// Not sure what to do here..

任何想法。在此先感谢..

1 个答案:

答案 0 :(得分:0)

是否询问表单的创建或表单数据的提交? 如果我理解正确,想要使用Voucher ViewModel填充视图。当您这样做时,您可以在视图中迭代SubTransaction列表,如下所示:

for (int i = 0; i < Model.st.Count; i++)
{
    @Html.TextBoxFor(x => x.st[i].debit)
}

假设您已使用某些内容填充了列表,这将为每个列表项创建输入。这是用户输入的表单。

当您的数据张贴到控制器方法时,这些值将绑定到&#39;凭证&#39;模型,您可以在foreach上执行List<SubTransaction>并按照以下方式处理它们:

foreach (SubTransaction item in model.st)
{
    // process the SubTransaction record
}