C# 创建jquery对象数组并在表单提交上发布其值

C# 创建jquery对象数组并在表单提交上发布其值,c#,jquery,asp.net-mvc-3,C#,Jquery,Asp.net Mvc 3,我在表单中动态添加了html元素(SelectList): //Dynamicly adding selectlist elements function newshit() { i = i + 1 $("#mytable").append("<tr><td><div id='div" + i + "'><select id='elem" + i + "' name='elem" + i + "' class='ted'></

我在表单中动态添加了html元素(SelectList):

//Dynamicly adding selectlist elements
function newshit() {
    i = i + 1
    $("#mytable").append("<tr><td><div id='div" + i + "'><select id='elem" + i + "' name='elem" + i + "' class='ted'></select><input type='button' value='-' id='buttonminus" + i + "' style='width:5%;' onclick='removeelem(elem" + i + ",buttonminus" + i + "," + i + ")'/></div></td></tr>")
    getitems("elem" + i)
}

//filling lists
function getitems(item) {
    $.getJSON('@Url.Content("~/Stok/Items/")', {}, function (data) {
        $.each(data, function (i, c) {
            $("#" + item).append("<option value='" + c.Value + "' title='" + c.Text + "' label='" + c.Text + "'>" + c.Text + "</option>")
        })
    })
}

//removing element, when button next to it used
function removeelem(elem,buttonminus,i) {
    if ($("select").length > 1) {
        $("#div" + i).closest('tr').empty().remove()
    } else if ($("select").length <= 1) {
        alert("At least 1 of items must be chosen to create a group!")
    }
}

//checking elements and values existence
function check() {
    var slcts = $("select").serialize();
    alert(slcts)
}
//动态添加selectlist元素
函数newshit(){
i=i+1
$(“#mytable”)。追加(“”)
getitems(“元素”+i)
}
//填写清单
函数getitems(项目){
$.getJSON('@Url.Content(“~/Stok/Items/”),{},函数(数据){
$。每个(数据、功能(i、c){
$(“#”+项)。追加(“+c.Text+”)
})
})
}
//当使用元素旁边的按钮时,移除元素
功能删除元素(元素,按钮分钟,i){
如果($(“选择”)。长度>1){
$(“#div”+i).closest('tr').empty().remove()

}如果($(“select”).length您可以使用-

var selectdata = $("select").serialize()
这将返回一个字符串,格式为
=&=
等。您需要在创建选定HTML时向其添加“name”属性,以使其正常工作

演示-


然后,您可以在发布表单之前将
selectdata
变量放在隐藏字段中,或者使用或方法通过AJAX发送表单-

var selectdata = $("select").serialize()
这将返回一个字符串,格式为
=&=
等。您需要在创建选定HTML时向其添加“name”属性,以使其正常工作

演示-


然后,您可以在发布表单之前将
selectdata
变量放在隐藏字段中,或者使用or方法通过AJAX发送表单。

需要检查这一点,但我认为以下操作应该有效:

  • 更改代码,使ID的格式类似于:

    id=“elem[0]”

  • 然后,如果您的控制器具有如下签名:

    public ActionResult Something(IEnumerable<string> elem)
    {
    
    }
    
    public ActionResult某物(IEnumerable元素)
    {
    }
    

    然后他应该“正常工作”。

    需要检查这一点,但我认为以下几点应该有效:

  • 更改代码,使ID的格式类似于:

    id=“elem[0]”

  • 然后,如果您的控制器具有如下签名:

    public ActionResult Something(IEnumerable<string> elem)
    {
    
    }
    
    public ActionResult某物(IEnumerable元素)
    {
    }
    


    那么他应该“好好工作”.

    为什么要在客户端执行此操作,为什么不在服务器端处理此操作?这些值都将被发布。然后给我一个示例:dwy为什么要在客户端执行此操作,为什么不在服务器端处理此操作?这些值都将被发布。然后给我一个示例:dwy你想发送数组吗?你想访问数组吗n您的控制器?为什么我要将其作为数组发送以了解动态创建的项目数?在“&”上拆分此字符串以获取名称/值数组肯定相对简单。为什么要发送数组?是否要访问控制器中的数组?为什么我要将其作为数组发送以了解动态创建的项目数在“&”上拆分此字符串以获得名称/值数组肯定相对简单。我应该如何创建id为=“elem[0]”的元素这种方式?通过字符串工作还是创建objectArray?。与您当前执行的方式完全相同,只需稍微更改字符串。您确定有效吗?因为我遇到了一些问题。您可以显示视图和控制器部件的示例吗?不,没有一种简单的方法可以检查。如果您查看发布的formcollection、 你有什么?我终于做到了是的,你的代码工作只需要使用一个介于和之间的模型,
    应该以
    i=0开始;
    因为
    IEnumerable
    0开始,所以问题就解决了!谢谢。我应该怎么做才能创建id=“elem[0]”的元素这种方式?通过字符串工作还是创建objectArray?。与您当前执行的方式完全相同,只需稍微更改字符串。您确定有效吗?因为我遇到了一些问题。您可以显示视图和控制器部件的示例吗?不,没有一种简单的方法可以检查。如果您查看发布的formcollection、 你有什么?我终于做到了你的代码工作只需要使用一个介于和之间的模型
    应该以
    i=0开始;
    因为
    IEnumerable
    0开始,所以问题解决了!谢谢。