将动态生成的文本框值传递给ASP.NET MVC中的控制器

时间:2015-10-03 09:33:25

标签: javascript c# jquery asp.net asp.net-mvc

我有一些表单,我想在+按钮点击时自动生成新的文本框,然后我想将它提交到Candidates控制器中的CandidateRegister操作方法。

@model SourceTreeITMatchmaking.Models.CandidateRegisterViewModel

候选人查看

@using (Html.BeginForm("CandidateRegister", "Candidates"))
{
     <div id="myTechnologies">
             <div class="row">
                   <div class="col-sm-6" style="padding-left: 0;">
                       @Html.TextBoxFor(m => m.SelectedMyTechnologies.Technology, new {@class="form-control", placeholder="C#, Java, Sql Server..."})
                    </div>
              </div>
        </div>
        <hr class="mt60">
        <div class="clearfix">
                 <input type="submit" class="btn btn-default btn-large pull-right" value="Register candidate!">
        </div>
}

jQuery函数,用于在(+)按钮上添加新的文本框,单击

$("#add-technology-candidate").click(function () {
    var firstDiv = $(' <div class="row"> <div class="col-sm-6" style="padding-left: 0;"> ' +
        ' <input type="text" class="form-control" placeholder="C#, Java, Sql Server..." /> </div>');
    $("#myTechnologies").append(firstDiv.append(deleteButton));
});

我用于强类型模型的CandidateRegisterViewModel的一个属性

public class CandidateRegisterViewModel
{
    public SelectedMyTechnologies SelectedMyTechnologies { get; set; }
}

/ 我在CandidateRegisterViewModel中使用的属性 /

public class SelectedMyTechnologies
{
        public List<string> Technology { get; set; }
}

长话短说 - &gt;我想在(#add-technology-candidate)按钮上单击生成文本框,然后将用户输入的数据作为列表传递给我的控制器。由于我的代码现在是,我只能从第一个文本框传递数据(不是动态生成的)。我应该如何更改jQuery方法以支持这两种类型?

提前致谢。

1 个答案:

答案 0 :(得分:3)

由于您的属性为GDB,因此您可以为动态创建的文本框提供与属性匹配的名称属性

List<string>

请注意,这仅适用于 <input type="text" name="SelectedMyTechnologies.Technology" ... /> 或值类型的集合。对于复杂对象的集合,您需要按照this answer

包含索引器