Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC3 razor:使用jQuery将自定义类添加到列表中_Jquery_Asp.net Mvc 3_Razor - Fatal编程技术网

MVC3 razor:使用jQuery将自定义类添加到列表中

MVC3 razor:使用jQuery将自定义类添加到列表中,jquery,asp.net-mvc-3,razor,Jquery,Asp.net Mvc 3,Razor,我有一个这样的课程设置 public class MyCLass { //... public IList<MyInnerClass> InnerClass { get; set;} } public class MyInnerClass { public string A { get; set;} public string B { get; set;} //.... } 公共类MyCLass { //... 公共ILis

我有一个这样的课程设置

 public class MyCLass
 {
     //...
     public IList<MyInnerClass> InnerClass { get; set;}
 }

 public class MyInnerClass
 {
    public string A { get; set;}
    public string B { get; set;}
    //....
 }
公共类MyCLass
{
//...
公共IList内部类{get;set;}
}
公共类MyInnerClass
{
公共字符串A{get;set;}
公共字符串B{get;set;}
//....
}
在我的cshtml表单中,我可以将它放在所有页面上,然后用类似的东西将其发回

for(int i=0; i< Model.InnerClass.Count; i++)
{
  @Html.EditorFor(m => m.InnerClass[i].A);
  @Html.EditorFor(m => m.InnerClass[i].B);
}
for(int i=0;im.InnerClass[i].A);
@EditorFor(m=>m.InnerClass[i].B);
}

但现在我需要有一个按钮,可以在现有的输入下添加一个新的
MyInnerCLass
,并使用javascript动态地将所有内容绑定回页面。我该怎么做?jQuery是首选,但我可以使用任何有效的工具查看Phil Haacked的博客。他发布了几乎所有关于默认模型绑定器如何处理列表的信息


只要您使用
非顺序索引
方法,您就可以动态地执行您想要的操作。

一种方法是将for循环的每一行包装在一些HTML标记中,例如div或tr,以便jQuery可以引用它。然后,您可以使用其中一个生成的行作为模板行。必须用适当的值替换索引。假设您有以下HTML输出:

您可以使用jQuery选择第一行,然后克隆它,使用regex替换索引,然后追加该行:

var newRowIndex = x; // determine row index
var newRow = $("#rows .row").eq(0).clone(true);
newRow.find(":input").each(function() {
  var name = $(this).attr("name").replace(/\[\d+\]/, "[" + rowIndex.toString() + "]");
  var id = name.replace(/[.\]\[]/g, "_");
  $(this).attr("name", name);
  $(this).attr("id", id);
});
$("#rows").append(newRow);

我会使用
foreach
来迭代列表,就像这样
foreach(Model.InnerClass中的var myClass)