我正在使用Form Post方法将数据提交到我的MVC应用程序中的控制器。 我的MVC应用程序控制器方法接受ViewModel。 我添加了其他viewModel的新列表,我想将数据传递给新添加的viewmodel。
示例代码(未完全执行)
控制器现有代码
public ActionResult AddProduct(ProductViewModel productViewModel)
{
//some operation
}
public class ProductViewModel
{
Branch_Product_Taxes = new List<Branch_Product_TaxesViewModel>();
}
//viewmodel
$('#ProductForm').submit(); //javascript form submit method
var ObjectList = new Array()
现在我添加了对象列表中的对象列表 我想通过这个列表控制器
答案 0 :(得分:1)
您需要根据复杂数据类型创建隐藏元素 考虑以下问题 如果您需要发布包含姓名等属性的员工列表,请查看以下代码。
您的观点模仿类似
public class ProductViewModel
{
public IList<Employees> = new List<Employees>();
}
Javascript代码
var html = '<input type="hidden" name="Employees[0].Name" value="Employee1"/>';
html+='<input type="hidden" name="Employees[0].Designation" value="Des1"/>';
html+='<input type="hidden" name="Employees[1].Name" value="Employee2"/>';
html+='<input type="hidden" name="Employees[1].Designation" value="Des2"/>';
$('#ProductForm').append(html);
$('#ProductForm').submit();
您将获得两个记录的列表作为(0和1)索引。
您可以使用for循环并动态生成隐藏的html,并在表单提交之前附加它。
答案 1 :(得分:0)
你需要在你传递的ViewModel中将列表定义为属性,默认情况下,modelbinder不会考虑像
这样的字段Branch_Product_Taxes = new List<Branch_Product_TaxesViewModel>();
你需要定义属性Like
public IList<Branch_Product_TaxesViewModel> Branch_Product_Taxes { get; set; }