能提交给Controller的只有form中的input   url  Cookies
所以你可以考虑怎么在input中下功夫~
比如可以
<input name="listID" value="ID1;ID2;ID3">FormCollection["listID"].split(';')
.....
....
....

解决方案 »

  1.   

    嗯 一楼那样 只能传一串ID过后台 然后后台分开循环 ··不过这个和MVC4没什么关系吧 基本都是这样的
      

  2.   

    一样的,每个TextBox给不同的id,然后循环遍历FormCollection
      

  3.   

    like this?
    http://www.cnblogs.com/insus/p/3378016.html
      

  4.   

    直接提交表单,只能映射一条数据,因为每条数据的字段name或id都一样。
      

  5.   

    var planlist = libManagementDB.BLL.DrawUpContractFilesSentManager.GetList(x => x.DrawUpContractId == drawUpContractId && x.TypeId == typeId);
        int index = 1;
        var tablename = "tabEditPlan" + typeId;
        var fname = "";
        var datename = "";
        var aname = "";
        var rename = "";
        <script type="text/javascript">
            function addnewplan1() {
                var table = document.getElementById("tabEditPlan" + Number(@typeId));
                var newindex = table.rows.length;
                var tr = table.insertRow();
                var td0 = tr.insertCell(0);
                td0.innerHTML = newindex;
                var td1 = tr.insertCell(1);
                td1.innerHTML = '<input name="fname' + newindex +  "_" + @typeId+'" type="text" class="input_class">';
                var td2 = tr.insertCell(2);
                td2.innerHTML = '<input name="amount' + newindex + "_" + @typeId + '" type="text" class="input_class" style="width:35px">';
                var td3 = tr.insertCell(3);
                td3.innerHTML = '<input name="subdate' + newindex + "_" + @typeId + '" type="text" onclick="WdatePicker();" class="Wdate">';
                var td4 = tr.insertCell(4);
                td4.innerHTML = '<input name="rename' + newindex + "_" + @typeId + '" type="text" class="input_class">';
                var td5 = tr.insertCell(5);
                td5.innerHTML = '<img src="/images/cancel.gif" style="cursor:pointer;" onclick="delplan1(' + newindex + ')" alt="删除" />';            td0.style["textAlign"] = "center";
                td1.style["textAlign"] = "center";
                td2.style["textAlign"] = "center";
                td3.style["textAlign"] = "center";
                td4.style["textAlign"] = "center";
                td5.style["textAlign"] = "center";
            
            }
            function delplan1(index) {
                var table = document.getElementById("tabEditPlan" + Number(@typeId));
                table.deleteRow(index);            for (i = 1; i < table.rows.length; i++) {
                    table.rows[i].cells[0].innerHTML = i.toString();
                    table.rows[i].cells[5].innerHTML = '<img src="/images/cancel.gif" style="cursor:pointer;" onclick="delplan1(' + i + ')" />';
                }        }
        </script>
        <table id="@tablename" style="width:760px">
            <tr>
                <td style="text-align:center;width:40px"><b>序号</b></td>
                <td style="text-align:center;width:25%"><b>资料及文件名称</b></td>
                <td style="text-align:center;width:8%"><b>份数</b></td>
                <td style="text-align:center;width:15%"><b>提交日期</b></td>
                <td style="text-align:center;width:30%"><b>备注</b></td>
                <td style="text-align:center;"><a onclick="addnewplan1();" style="cursor:pointer;"><img src="/images/add.gif" alt="添加" /></a></td>
            </tr>
            @if (planlist.Count == 0)
            {
                fname = "fname" + index + "_" + typeId;
                aname = "amount" + index + "_" + typeId;
                datename = "subdate" + index + "_" + typeId;
                rename = "re" + index + "_" + typeId;
                    <tr>
                        <td style="text-align:center">@index</td>
                        <td style="text-align:center"><input class="input_class" name="@fname" type="text" " ></td>
                        <td style="text-align:center"><input name="@aname" type="text" " style="width:35px" class="input_class"></td>
                        <td style="text-align:center"><input name="@datename" type="text" readonly="true"  onclick="WdatePicker();" class="Wdate"></td>
                        <td style="text-align:center"><input name="@rename" type="text" class="input_class" ></td>
                        <td style="text-align:center"><img src="/images/cancel.gif" style="cursor:pointer;" alt="删除" title="2" onclick="delplan1('@index')"/></td>
                    </tr>
            }
            @{
               
                //int idefaultAmountTotal = 6;
                foreach (var item in planlist)
                {
                    fname = "fname" + index + "_" + typeId;
                    aname = "amount" + index + "_" + typeId;
                    datename = "subdate" + index + "_" + typeId;
                    rename = "re" + index + "_" + typeId;
                    <tr>
                        <td style="text-align:center">@index</td>
                        <td style="text-align:center"> <input class="input_class" name="@fname" type="text" value="@item.FileName" ></td>
                        <td style="text-align:center"><input name="@aname" type="text" value="@item.Amount" class="input_class" style="width:35px"></td>
                        <td style="text-align:center"><input name="@datename" type="text" readonly="true" value="@(item.SubDate == null || item.SubDate == "" ? "" : Convert.ToDateTime(item.SubDate).ToShortDateString())" onclick="WdatePicker();" class="Wdate"></td>
                        <td style="text-align:center"><input name="@rename" type="text" value="@item.Re" class="input_class" ></td>
                        <td style="text-align:center"><img src="/images/cancel.gif" style="cursor:pointer;" alt="删除" title="2" onclick="delplan1('@index')"/></td>
                    </tr>
                    index = index + 1;
                }
                fname = "fname" + index + "_" + typeId;
                aname = "amount" + index + "_" + typeId;
                datename = "subdate" + index + "_" + typeId;
                rename = "re" + index + "_" + typeId;
            }
        </table>把这个代码看成一个页面。当每个文本框都有不同的ID了,可是唯一的区别就是加了一个变量名而已。你的问题就迎刃而解。后台取值方法。
    (假设有30条数据,你可以在js里面保存一共有多少条数据)
    for (int i = 0; i < 30; i++)
                    {
                        string Pfirst = "Pfirst" + (i + 1).ToString();
                        string bili = "bili" + (i + 1).ToString();
                        string fufeie = "Pfirst" + (i + 1).ToString();
                        string shijian = "bili" + (i + 1).ToString();
                        if (!string.IsNullOrEmpty(Request[Pfirst]))
                        {
                            DrawProjectPlanInfo fileinfo = new DrawProjectPlanInfo();
                            fileinfo.DrawUpContractId = id;
                            fileinfo.Pfirst = Request[Pfirst];
                            fileinfo.bili = Request[bili];
                            fileinfo.fufeie = Request[fufeie];
                            fileinfo.shijian = Request[shijian];
                            fileinfo.DrawUpContractId = model.DrawUpContractId;
                            DrawProjectPlanManager.Add(fileinfo);
                        }
                    }
      

  6.   


        有的时候会有的时候就不会,不知道为什么、、、以前碰到过 这个映射一个list 话 控件的name是有规律的,细心点就可以发现的
      

  7.   

    前台数据:
    第一行 <input name="[0].ProductID" />
    第2行 <input name="[1].ProductID" />
    第3行 <input name="[2].ProductID" />提交下试试
      

  8.   


        有的时候会有的时候就不会,不知道为什么、、、以前碰到过 这个映射一个list 话 控件的name是有规律的,细心点就可以发现的
        我知道和生成的name有关,但是我用的是@html.出来的东东,有时候不生成Name等属性
      

  9.   

    这种操作直接找个jq.grid 获取到JSON字符串传递到后台反序列化成对象集合,入库,自己写主要是前台JS代码,太麻烦了,所以还是直接找组件,方便
      

  10.   

    刚做了一个mvc4的批量操作,帮你写个大概,主要看思路
    不管你怎么写吧,前台拼接一个你要处理的所有数据的json 串,ajax发送后台接受处理,返回一个json结果,方便前端提示,或弹错前台cshtml
    var y=[1,2,3];// js直接操作获取你要修改产品ID,假设这里是1,2,3
           //拼接json数据
            var jsonstr = GetJson(ids);        function GetJson(ids)
            {
                var jsonstr = '[';
                var bsku;
                for (var i = 0; i < ids.length; i++) {
                        jsonstr += '{';
                        jsonstr += "'id':'" + id+ "',";
                        jsonstr += '}'
                        jsonstr += ','            }
                jsonstr = jsonstr.substring(0, jsonstr.length - 1);
                jsonstr += ']';
                return jsonstr
            }
            //ajax发送json,请求后台处理
            $.post("/Print/HandleJson", { jsons: jsonstr }, function (js) {
                var jsonData = eval("(" + js + ")");//还可以接受后台返回的json结果        });   
           //Control 控制器 写个接收方法
            public JsonResult HandleJson(FormCollection c)
            {
                string strjson = c["jsons"];
                JArray ja = (JArray)JsonConvert.DeserializeObject(strjson);//获取前台json数据
        int s_id=0;
         foreach(JObject jb in ja)
                 {
    s_id = Convert.ToInt32(jb["id"].ToString()); //得到id 做你的修改动作
                 }         }