视图建模:列表字段

时间:2017-11-15 20:40:13

标签: asp.net asp.net-mvc razor

我的Form课程有List<FormField>

public class Form
{
    public int ID { get; set; }
    public int templateID { get; set; }
    public List<FormField> fields { get; set; }

    public Form()
    {
        fields = new List<FormField>();
    }
}

FormField

public class FormField
{
    public object value { get; set; }
    public TemplateField templateField {get;set;}
}

TemplateField

public class TemplateField
{
    public int ID { get; set; }
    public string fieldDescription { get; set; }
    public TemplateFieldType type { get; set; }
}

我的控制器类:

public class MedicalAppointment:Controller     {

    public IActionResult Index()
    {
        Template template = new TemplateDataMapper().GetMedicalAppointmentTemplate();
        Form form = new Form();
        form.templateID = template.ID;
        foreach(TemplateField field in template.fields)
        {
            FormField formField = new FormField();
            formField.templateField = field;
            form.fields.Add(formField);
        }
        return View(form);
    }

    public IActionResult TemplateManagement()
    {
        return View();
    }

    [HttpPost]
    public void SaveForm(Form form)
    {
          ......
    }

我的观点如下:

@model Form
....
@using (Html.BeginForm("SaveForm", "MedicalAppointment", FormMethod.Post, new { id = "registerDonorForm" }))
{
    <table class="personal-data">
        @for(int i=0; i<Model.fields.Count; i++)
        {
            <tr>
                <th>@Html.LabelFor(model => Model.fields[i].templateField.ID, Model.fields[i].templateField.fieldDescription)</th>
                <th>@Html.TextBoxFor(model => Model.fields[i].value)</th>
            </tr>
        }
    </table>
    <div class="register-button">
        <input type="submit" value="Registar" />
    </div>
}
</div>

我想创建一个动态表单,当我提交它时,我可以收到一个带有field[i].value的表单。

我的问题是,当我提交表单时,在控制器中,我没有收到用户提交的任何值。收到Form,FormField.Value为null,Form.FormField.TemplateField.ID。

任何人都可以帮助我吗?

注意:忘记html和其他错误名称的类名。

提前谢谢

0 个答案:

没有答案