如何在提交表单post方法之前将复杂数据类型附加到视图模型

How to append Complex Data Type to View Model before submit of form post method

本文关键字:复杂数据类型 模型 视图 提交 表单 方法 post      更新时间:2023-09-26

我使用表单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()

现在我已经在对象列表中添加了对象列表我想传递这个列表控制器

需要根据复杂数据类型创建隐藏元素考虑以下问题如果您需要发布带有属性(如姓名等)的员工列表,请执行以下代码。

你的视图模型类似于

 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,并在表单提交前添加它。

您需要将列表定义为您正在传递的ViewModel中的属性,默认情况下modelbinder不考虑像

这样的字段
Branch_Product_Taxes = new List<Branch_Product_TaxesViewModel>();

你需要定义像

这样的属性
 public IList<Branch_Product_TaxesViewModel> Branch_Product_Taxes  { get; set; }