我页面提交的时候 主要其中有一个input disable了
action接受的实体类到这个disable的值就断了
就是页面上input的name是这样的
WBody[i].F_VALUE
当比如i=90的input是disable了 那么传过来的实体类里面只有90个
我扔到页面上的model 是一个list 比如list的count是10
<input type="text" name="WBody[" + @i + "].F_VALUE"> />
如果其中有一个input的disabled="disabled"的话 假设这个input的name=WBody[6].F_VALUE
那么这个页面提交 我后台action里面的model的list就只有6个了而不是全部的10个
没错收集的时候本身就存在这个问题 。有个办法用js 找到所有的 INput 吧所有 input 的name 改成有序的就可以了
// Table重排索引 tbl --table的ID function ResetRowIndex(tbl) { var i = 0; // 遍歷行 $("#" + tbl).find("tbody>tr").each(function () { // 遍歷行中hidden $(this).find("input[type='hidden']").each(function () { $(this).attr("id", $(this).attr("id").replace(/\d/, i)); $(this).attr("name", $(this).attr("name").replace(/\d/, i)); }); // 遍歷行中text $(this).find("input[type='text']").each(function () { $(this).attr("id", $(this).attr("id").replace(/\d/, i)); $(this).attr("name", $(this).attr("name").replace(/\d/, i)); }); // 遍歷行中checkbox $(this).find("input[type='checkbox']").each(function () { $(this).attr("id", $(this).attr("id").replace(/\d/, i)); $(this).attr("name", $(this).attr("name").replace(/\d/, i)); }); // 遍歷行中radio $(this).find("input[type='radio']").each(function () { $(this).attr("id", $(this).attr("id").replace(/\d/, i)); $(this).attr("name", $(this).attr("name").replace(/\d/, i)); }); i++; }); }
动态删除一行 或者 是最后提交的时候 调用一下这个function 传入你要重新排序的 table 容器
你的意思是比如缺少10 就用JS生成一个?
我现在是提交之前把所有disabled的改成enabled也可以...
不过觉得恶心了点
不知道有没有类似默认值自动填充的机制
@最爱吃糖了: 缺少10个 js 生成一个? 不明白。
@最爱吃糖了: 问题的根源就是 disabled form 提交时忽略的 导致原来有序的变为 无序。 搜集器就不认了。
解决的办法只有这一个。 把未disabled的 控件name 重新排序。
<input type="text" name="WBody[" + @i + "].F_VALUE"> />
“Wbody”必须是Action 方法接收的属性名称 或者 Action 参数里面对象里面某个属性的名称
@sym_cn: 看懂你的意思了 如果本来是1 2 3 但其中2没有了
你就把3填充上来
可是我的需求是2不能少
所以还是这样 find("input:disabled").removeAttr("disabled");
不过还是谢谢了
@最爱吃糖了: 1,2,3 。 呵呵 越来越糊涂了。 2怎么不能少呢 不能少为何吧2 disabled 。概要说一下你的需求。 莫非你只是不想让2这个控件输入?
@最爱吃糖了: 我本来还有更复杂的组装 wchidlren[key][0].value
wchidlren是个字典 然后后面是list 我用textfor自动生成都回发不了....
@最爱吃糖了: 回发不了? 是提交不了吗?
@sym_cn: 是啊 需求就是这样 数据库里面每一条记录的顺序和页面上是严格一致的,呵呵
所以这样取数据扔到页面和更新数据库可以无脑一些
@最爱吃糖了: 是request里面都找不到这个东西
重复刚才的问题 有1,2,3 三笔数据。 你对着三笔 什么样的操作后再提交后台。
@sym_cn: 1 2 3个input 2被disabled了 那么 request里面只有1 3
我在提交按钮submit前把2这个input的disabled去掉 那么提交不就是1 2 3了么
@最爱吃糖了: 嗯 明白了 那就改一下
ResetRowIndex 这个function 只查找 未disabled的 给未disabled控件的name变得有序
这样能否实现你的需求
@sym_cn: 一半吧可以
其实我的需求就是去页面10个 回来一定要10个
你那样可能会少了 而且我会不清楚少了哪个
因为我现在是就是通过顺序确定值的对应关系,你这样我就需要在要页面提交的数据里面另外加标志位了
还是谢了
微软要是能有自动补全机制就好了
@最爱吃糖了: 好吧 我觉得你还是缺少一个思路 留下你的在线联系方式。跟你详细说一下
@sym_cn: pm你了
问题是什么?楼主说清楚点
什么意思?
自定义一个ModelBuilder,来处理页面提交的元素。
ModelBuilder 自己通过request[key]来接受发过来的东西?
是这样处理么?
disable了 就不会提交到后台吧
但是disabled以后的所有不是disabled也不提交了...
@最爱吃糖了: 不是不提交 在request里面都有 但是不自动帮我拼装成实体类了