C# 向页面添加html组件的AJAX最佳实践
我对AJAX/javascript还不熟悉,我不确定我要做的事情的最佳方法是什么 我正在使用Javascript在我的页面上调用页面方法(WebMethods)。我正在检索的数据基本上是一个div列表 我不知道会返回多少,但需要根据内容将它们插入页面上的适当位置 我认为有几种方法可以做到这一点:C# 向页面添加html组件的AJAX最佳实践,c#,javascript,asp.net,ajax,webmethod,C#,Javascript,Asp.net,Ajax,Webmethod,我对AJAX/javascript还不熟悉,我不确定我要做的事情的最佳方法是什么 我正在使用Javascript在我的页面上调用页面方法(WebMethods)。我正在检索的数据基本上是一个div列表 我不知道会返回多少,但需要根据内容将它们插入页面上的适当位置 我认为有几种方法可以做到这一点: 创建HtmlGenericControls列表并将其传回 创建一个字符串列表,其中每个字符串都是我想放到页面上的整个Div代码。(出于某种原因,这感觉不对) 创建包含必要数据的简单容器对象。将它们传递到
我想这些都可以,但我想遵循标准惯例。你会选择哪一个 实际上,我认为最好的做法是从服务返回数据,而不是HTML,并在客户端上构建UI。通常这是因为相同的数据可能在不同的地方使用。现在,PageMethods只返回该页面的数据,因此如果不需要重用,服务器端HTML也可以,但我个人使用JQuery在客户机上构建UI,并且只传递数据;这就减少了通过网络传输的数据,从而提高了应用程序的速度,并将页面呈现推送到客户端浏览器
HTH.实际上,我认为最好的做法是从服务返回数据,而不是HTML,并在客户端上构建UI。通常这是因为相同的数据可能在不同的地方使用。现在,PageMethods只返回该页面的数据,因此如果不需要重用,服务器端HTML也可以,但我个人使用JQuery在客户机上构建UI,并且只传递数据;这就减少了通过网络传输的数据,从而提高了应用程序的速度,并将页面呈现推送到客户端浏览器
HTH.我建议将数据作为JSON对象返回。在JSON对象中为每种类型的控件创建数组,然后您可以使用
for(JSON_对象中的var q['div_type_q'])
对它们进行循环,并动态地将它们添加到页面中
json对象示例:
json\u对象={
div_type_1:[0:“内容”,1:“更多内容”,2:“更多内容”],
div_type_2:[0:“这是导航内容”]
}
您可以将类似的内容作为字符串传递,并使用var object=eval(“(“+returned string+”)”)
祝你好运我建议将数据作为JSON对象返回。在JSON对象中为每种类型的控件创建数组,然后您可以使用
for(JSON_对象中的var q['div_type_q'])
对它们进行循环,并动态地将它们添加到页面中
json对象示例:
json\u对象={
div_type_1:[0:“内容”,1:“更多内容”,2:“更多内容”],
div_type_2:[0:“这是导航内容”]
}
您可以将类似的内容作为字符串传递,并使用var object=eval(“(“+returned string+”)”)
祝你好运一段时间以来我也在这么做。我可以说,要做到这一点并不容易。 但是现在我找到了一个很好的解决方案,让我告诉你,最好的还是使用更新面板。为什么?因为,如果您使用的是例如msajax Extender,那么在使用updatepanel时它们将被正确初始化,如果没有,updatepanel甚至会传输新的脚本文件 好的,我的页面上有5个控件。它们中的每一个都用条件更新面板包装。用户可以更改每一项的设置,如果保存,只有一个控件上的设置会得到极好的同步 现在,如果a想要添加一个新的,我有另一个updatepanel,用于整个集合 像
现在,如果用户添加了另一个updatepanel(您必须在客户端进行管理,在某些地方使用webmethods保存它们,并使用此设置生成updatepanel),您将更新整个集合
让我告诉你,使用updatepanels可以节省很多时间 一段时间以来,我也在这样做。我可以说,要做到这一点并不容易。 但是现在我找到了一个很好的解决方案,让我告诉你,最好的还是使用更新面板。为什么?因为,如果您使用的是例如msajax Extender,那么在使用updatepanel时它们将被正确初始化,如果没有,updatepanel甚至会传输新的脚本文件 好的,我的页面上有5个控件。它们中的每一个都用条件更新面板包装。用户可以更改每一项的设置,如果保存,只有一个控件上的设置会得到极好的同步 现在,如果a想要添加一个新的,我有另一个updatepanel,用于整个集合 像
现在,如果用户添加了另一个updatepanel(您必须在客户端进行管理,在某些地方使用webmethods保存它们,并使用此设置生成updatepanel),您将更新整个集合
让我告诉你,使用updatepanels可以节省很多时间 更新面板的问题在于,它们会导致页面经历整个生命周期,并在每次更新时传递整个viewstate。我希望传递尽可能少的数据,这就是我选择页面方法的原因。是的,但是使用生命周期有一个很好的理由。有些依赖性你不必在意。我不是在谈论我没有尝试过的事情。我可以告诉你,因为我是这样工作的,所以我以前必须注意的错误和问题更少了。如果你打算使用updatepanels,你可以为此做准备,并且你正在构建你的孩子树 json_object = { div_type_1: [ 0: "Content", 1: "More content", 2: "Even more content" ], div_type_2: [ 0: "This is navigation content" ] }
<updatepanel>
<updatepanel-inner>
<control>
</updatepanel-inner>
<updatepanel-inner>
<control>
</updatepanel-inner>
<updatepanel-inner>
<control>
</updatepanel-inner>
<updatepanel-inner>
<control>
</updatepanel-inner>
</updatepanel>