Asp.net mvc 2 如何存储用于Javascript的复杂类型的数据?

Asp.net mvc 2 如何存储用于Javascript的复杂类型的数据?,asp.net-mvc-2,dom,jquery,Asp.net Mvc 2,Dom,Jquery,这是一个反复出现的主题:要么AJAX导致从服务器请求数据,然后将数据显示给用户,要么使用与Javascript有某种交互的数据预填充(即呈现)页面 以下是我看到的几种存储和操作(复杂)数据的可能性: 将数据简单地存储在DOM中,并使用Javascript从DOM中提取数据,对数据进行处理并相应地操作DOM以显示结果。获取和存储数据(多个隐藏字段)可能会非常混乱,与从Javascript获取数据相比,多个选择器的速度可能较慢。在预填充场景中,好处是数据可以通过搜索引擎爬行器进行索引/爬网,并且页

这是一个反复出现的主题:要么AJAX导致从服务器请求数据,然后将数据显示给用户,要么使用与Javascript有某种交互的数据预填充(即呈现)页面

以下是我看到的几种存储和操作(复杂)数据的可能性:

  • 将数据简单地存储在DOM中,并使用Javascript从DOM中提取数据,对数据进行处理并相应地操作DOM以显示结果。获取和存储数据(多个隐藏字段)可能会非常混乱,与从Javascript获取数据相比,多个选择器的速度可能较慢。在预填充场景中,好处是数据可以通过搜索引擎爬行器进行索引/爬网,并且页面可以在不启用Javascript的情况下工作(它会优雅地降级)

  • 使用Javascript作为保存数据的容器,并仅使用DOM来可视化数据。当触发某个动作时,从DOM中获取的唯一内容类似于实体的ID,因此我们知道在Javascript中引用哪个对象。但是如何将预填充的数据推送到Javascript?若我们只是将它们呈现给DOM,那个么我们就回到了从DOM场景中获取数据的过程。我们可以将JSON字符串呈现给页面的
    标记,然后填充DOM(但这可能会有缓存问题?)。或者我们可以使用AJAX延迟请求数据(但这会导致不必要的服务器负载)

  • 使用现成的容器,比如一些jquerytable插件(jqGrid)。但是不可能总是使用这样的插件,因为需要大量的定制,或者组件对于您的场景来说只是一种过度使用

  • 另外,您是否倾向于在服务器端(使用RenderPartial)尽可能多地渲染数据,并可能同时返回这两种数据以及渲染的HTML/Javascript


我试着搜索关于这个主题的文章,但没有取得多大成功。欢迎任何指导、建议和指点。

查看extjs数据存储,如我(当前)的方法是尽可能减少JavaScript。显然,只有一个地方处理内容的布局也是合适的。因此,我倾向于将布局呈现为给定位置所需的样子。因此,是的,Render方法将适当地呈现所有内容(不仅仅是原始数据,即一些JSON字符串或您拥有的东西)。对我来说,这样做有好处,因为实现“非JavaScript”场景通常很简单,其中内容不是通过Ajax加载的,而是作为其他页面上的嵌入内容加载的


然而,这只是我的方法。这不一定是最好的方式,可能会有所改变。我希望它能为决策过程提供一些指示,而不是用来获得特定的模型。

默认情况下,Javascript是一种功能极其强大的动态语言。在Javascript中将复杂对象存储为变量不是问题。例如:

var o = [new Object({ name: 'Test1', value: 1 }), 
         new Object({ name: 'Test2', value: 2 })];
alert(o[0].name) // Returns Test1 as a string

通过返回JSON对象的Ajax调用向数组中添加对象或从数组中删除对象是一种相对简单的方法。我不认为有理由在DOM中存储更多的ID来查找Javascript中的值,不管DOM引擎在浏览器中的速度有多快,在Javascript中存储它们会更优雅

您也可以使用jQuery.data

jQuery.data( element, key, value )
元素:与数据关联的DOM元素

键:命名要设置的数据段的字符串

值:新的数据值