首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC FormCollection性能速度

MVC FormCollection性能速度
EN

Stack Overflow用户
提问于 2012-07-14 05:33:10
回答 2查看 510关注 0票数 0

我正在处理一个具有动态生成的标记的页面。因此,我不知道表单上有哪些字段可用。因此,POST方法不是创建视图模型,而是使用FormCollection。一旦收到帖子,程序就会快速运行。

我的问题是:单击表单上的SUBMIT大约需要10 - 15秒才能命中控制器中POST操作的第一行的断点。在我的场景中,表单上有800个输入字段。仅仅为800个字段创建FormCollection真的需要这么长时间吗?有没有办法简化流程或缩短响应时间?

编辑:

IE分析器指示大部分时间花费在JQuery CSS选择器中。如果我删除所有CSS,页面将很快工作。为什么在回发到服务器之前CSS选择器正在运行?我可以禁用它吗?

编辑2:分析器现在显示在JQuery 1.6.4.min.js中花费的时间,函数是'k‘。我认为这只是一个内部变量查找。我还发现,从输入字段中删除“size”和“maxlength”属性可以使页面快速响应(万岁)……除了..。我需要这些客户端验证。我仍然在努力寻找一种方法来提高速度,或者删除属性并保留一些方法来限制客户端字段的输入长度。

编辑3:我在jquery-1.6.4.min.js中找到了函数k。在编辑2中,添加/删除'maxlength‘和'size’属性会带来很大的不同(33Kms而不是3kms)。但是,函数K应该不会做太多...因为它们不是nodetype===1,第一个IF应该失败,返回下一行上的函数。

代码语言:javascript
复制
function k(a,c,d)
    {
        if(d===b&&a.nodeType===1)
        {
            var e="data-"+c.replace(j,"-$1").toLowerCase();
            d=a.getAttribute(e);
            if(typeof d=="string")
            {
                try
                {
                    d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)
                }
                catch(g){}
                f.data(a,c,d)
            }
            else 
                d=b
        }
        return d
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-17 23:56:44

从Mystere Man的评论中可以看出,客户端正在验证,这个链接解决了这个问题:http://forums.asp.net/t/1523883.aspx/1/10?Disabling+client+side+validation+on+submit+button+

基本上,我禁用了submit按钮上的验证。这允许'maxlength‘和'size’属性在用户输入时起作用,但会阻止任何客户端对帖子的验证。此行为看起来很好,因为服务器将在处理输入时再次验证。帖子的平均时间从33秒变成了2秒。

同样在这里:Disable client-side validation in MVC 3 "cancel" submit button

票数 0
EN

Stack Overflow用户

发布于 2012-07-16 00:45:10

我刚刚创建了一个包含1000个字段的表单,控制器可以在提交后不到一秒的时间内访问每个字段。

下面是我创建字段的方式:

代码语言:javascript
复制
<script language="javascript" type="text/javascript">
$(document).ready(function () {
    for (var i = 0; i < 1000; i++) {
    $('<input/>').attr({ type: 'text', id: 'test'+i, name: 'test'+i,value:'test '+i }).appendTo('#fields');
    }
    });
</script>

这就是我们的行动:

代码语言:javascript
复制
    public ActionResult TestFields()
    {
        for (int i = 0; i < 1000; i++)
        {
            if (Request.Form[i] != string.Format("test{0}", i))
            {
                throw new Exception("bad value received");
            }
        }
            return View();
    }

用表单值填充FormCollection似乎不是问题。我在本地网络上有短值和测试。如果您有较长的值和较慢的网络,这可能是问题所在。如果每个值都是1KB,则需要发送800KB。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11478685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档