Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向页面添加html组件的AJAX最佳实践_C#_Javascript_Asp.net_Ajax_Webmethod - Fatal编程技术网

C# 向页面添加html组件的AJAX最佳实践

C# 向页面添加html组件的AJAX最佳实践,c#,javascript,asp.net,ajax,webmethod,C#,Javascript,Asp.net,Ajax,Webmethod,我对AJAX/javascript还不熟悉,我不确定我要做的事情的最佳方法是什么 我正在使用Javascript在我的页面上调用页面方法(WebMethods)。我正在检索的数据基本上是一个div列表 我不知道会返回多少,但需要根据内容将它们插入页面上的适当位置 我认为有几种方法可以做到这一点: 创建HtmlGenericControls列表并将其传回 创建一个字符串列表,其中每个字符串都是我想放到页面上的整个Div代码。(出于某种原因,这感觉不对) 创建包含必要数据的简单容器对象。将它们传递到

我对AJAX/javascript还不熟悉,我不确定我要做的事情的最佳方法是什么

我正在使用Javascript在我的页面上调用页面方法(WebMethods)。我正在检索的数据基本上是一个div列表

我不知道会返回多少,但需要根据内容将它们插入页面上的适当位置

我认为有几种方法可以做到这一点:

  • 创建HtmlGenericControls列表并将其传回
  • 创建一个字符串列表,其中每个字符串都是我想放到页面上的整个Div代码。(出于某种原因,这感觉不对)
  • 创建包含必要数据的简单容器对象。将它们传递到页面,并使用它们在javascript中创建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>