MVC3:将模型绑定到动态创建的html元素

时间:2012-06-28 16:41:04

标签: c# asp.net-mvc asp.net-mvc-3 model-view-controller

我有一个模型,其中包含其他模型的列表,其中还包含其他模型类型的列表,例如:

public class Report
{
    public string ReportId {get; set;}
    public List<ReportOutput> ReportOutputs;
}

//output types = PDf, csv, txt, etc.
public class ReportOutput
{   
    public int OutputType {get; set;}
    public List<DeliveryMethod> DeliveryMethods;
}

//delivery methods = email, ftp, etc.
public class DeliveryMethod
{
    public string MethodName {get; set;}
}

我有一个视图,可以使用jQuery基于这些对象的内容动态创建元素。该视图允许用户选中复选框以添加或删除不同的输出,并在每个输出中使用不同的传送方法。我需要知道如何将信息返回到控制器以加载到模型中以发送回数据库。从阅读开始,似乎我只需要在控制器中实例化一个模型,然后给视图中的每个元素一个与模型属性相对应的名称,然后调用控制器函数来检索所有数据并继续保存新填充的模型,但我创建此控制器功能的尝试失败。

所以我的问题是,如何创建控制器功能,我是否只需要在html元素上使用相应的名称,以允许根据视图中的信息创建模型?

2 个答案:

答案 0 :(得分:1)

您应该签出涵盖这些主题的following article,并解释默认模型绑定器所需的输入字段的命名约定,以便在提交表单时将其绑定回来。

答案 1 :(得分:1)

如果您在生成表单字段的名称时遵循以下模式,则默认模型绑定器将负责您自己必须完成模型绑定过程的其他工作(艰难的工作!)。

ReportId,

ReportOutputs [0] .OutputType,

ReportOutputs [0] .DeliveryMethods [0] .MethodName,

ReportOutputs [0] .DeliveryMethods [1] .MethodName,

ReportOutputs [1] .OutputType,

ReportOutputs [1] .DeliveryMethods [0] .MethodName,