首页 新闻 会员 周边

关于MVC3提交自动封装成实体类的问题

0
悬赏园豆:100 [已解决问题] 解决于 2012-11-01 17:17

我页面提交的时候 主要其中有一个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个

最爱吃糖了的主页 最爱吃糖了 | 初学一级 | 园豆:41
提问于:2012-11-01 16:09
< >
分享
最佳答案
0

没错收集的时候本身就存在这个问题 。有个办法用js 找到所有的 INput  吧所有 input 的name 改成有序的就可以了 

收获园豆:80
sym_cn | 小虾三级 |园豆:798 | 2012-11-01 16:28
// 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 容器

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:31

你的意思是比如缺少10 就用JS生成一个?

我现在是提交之前把所有disabled的改成enabled也可以...

不过觉得恶心了点

不知道有没有类似默认值自动填充的机制

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:32

@最爱吃糖了: 缺少10个 js 生成一个?  不明白。

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:33

@最爱吃糖了: 问题的根源就是 disabled  form 提交时忽略的  导致原来有序的变为  无序。 搜集器就不认了。 

解决的办法只有这一个。   把未disabled的 控件name 重新排序。   

 

<input type="text" name="WBody[" + @i + "].F_VALUE"> />

 

“Wbody”必须是Action 方法接收的属性名称 或者 Action 参数里面对象里面某个属性的名称

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:37

@sym_cn: 看懂你的意思了 如果本来是1 2 3  但其中2没有了

你就把3填充上来

可是我的需求是2不能少

所以还是这样 find("input:disabled").removeAttr("disabled");

不过还是谢谢了

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:39

@最爱吃糖了: 1,2,3 。 呵呵 越来越糊涂了。  2怎么不能少呢  不能少为何吧2 disabled 。概要说一下你的需求。   莫非你只是不想让2这个控件输入?

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:41

@最爱吃糖了: 我本来还有更复杂的组装 wchidlren[key][0].value

wchidlren是个字典 然后后面是list 我用textfor自动生成都回发不了....

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:43

@最爱吃糖了: 回发不了?  是提交不了吗?

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:44

@sym_cn: 是啊 需求就是这样 数据库里面每一条记录的顺序和页面上是严格一致的,呵呵

所以这样取数据扔到页面和更新数据库可以无脑一些

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:45

@最爱吃糖了: 是request里面都找不到这个东西

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:50

重复刚才的问题   有1,2,3  三笔数据。 你对着三笔 什么样的操作后再提交后台。

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:50

@sym_cn: 1 2 3个input 2被disabled了 那么 request里面只有1 3

我在提交按钮submit前把2这个input的disabled去掉 那么提交不就是1 2 3了么

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:54

@最爱吃糖了: 嗯 明白了  那就改一下

ResetRowIndex 这个function  只查找 未disabled的  给未disabled控件的name变得有序
这样能否实现你的需求
sym_cn | 园豆:798 (小虾三级) | 2012-11-01 16:58

@sym_cn: 一半吧可以

其实我的需求就是去页面10个 回来一定要10个

你那样可能会少了 而且我会不清楚少了哪个

因为我现在是就是通过顺序确定值的对应关系,你这样我就需要在要页面提交的数据里面另外加标志位了

还是谢了

微软要是能有自动补全机制就好了

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 17:02

@最爱吃糖了: 好吧 我觉得你还是缺少一个思路 留下你的在线联系方式。跟你详细说一下

sym_cn | 园豆:798 (小虾三级) | 2012-11-01 17:08

@sym_cn: pm你了

最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 17:17
其他回答(4)
0

问题是什么?楼主说清楚点

oppoic | 园豆:770 (小虾三级) | 2012-11-01 16:11
0

什么意思?

az235 | 园豆:8483 (大侠五级) | 2012-11-01 16:12
0

自定义一个ModelBuilder,来处理页面提交的元素。

收获园豆:20
sinhbv | 园豆:2579 (老鸟四级) | 2012-11-01 16:13

ModelBuilder 自己通过request[key]来接受发过来的东西?

是这样处理么?

支持(0) 反对(0) 最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:18
0

disable了    就不会提交到后台吧

Qlin | 园豆:2403 (老鸟四级) | 2012-11-01 16:18

但是disabled以后的所有不是disabled也不提交了...

支持(0) 反对(0) 最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:21

@最爱吃糖了: 不是不提交 在request里面都有 但是不自动帮我拼装成实体类了

支持(0) 反对(0) 最爱吃糖了 | 园豆:41 (初学一级) | 2012-11-01 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册