我在asp.net mvc中加载了一个大表单。我的表单有一些页面,每个页面都有一些问题,每个问题都有一些选择。
我想为用户加载表单及其所有项目,但它太大而且速度慢。 我有这些选择:
服务器缓存:但对于某些用户,必须随机或动态选择问题。
制作html页面并存储在服务器
您是否有任何解决方案或任何链接可以在加载大型表单时从MVC获得更好的性能。
答案 0 :(得分:1)
这实际上取决于您构建“表单页面”的方式。我在这里看到两种情况:“页面”的数量是已知的(常数)而相对较小的或你有一个未知数量的“表单页面”。
在第一种情况下,我建议使用标签显示结构,其中每个“页面”都是一个标签。当用户选择它时,每个选项卡的内容将被延迟加载(使用Ajax)。这样您就不必从头开始加载所有页面和问题。作为一个额外的随机想法,在所有问题都得到回答之前,提交按钮将被禁用;这样,用户就可以提交“部分表格”。
在第二种情况下,您可以选择Next Page
方法,向用户呈现导航到问题“下一页”的可能性。在加载下一页之前,您将生成包含当前页面结果的隐藏字段,这样您就不会丢失表单数据,并且可以成功提交所有问题和答案。
解决您的问题点:当涉及随机性时,我看不到直接的解决方案。您不能也不应该为每个可用的组合(静态或缓存)生成页面。这可能适用于相对较少的页面和问题,但我不能真正将其视为可行的解决方案。您描述的场景适合“Ajax请求架构”(我使用了这个表达式,但它基本上就是这样:以Ajax为中心的设计)。
编辑:第三种解决方案是将所有问题和答案序列化为Json对象,并逐步将问题呈现到您的页面中。这个解决方案的缺点是你必须在JavaScript中实现很多逻辑。