Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 最佳实践:如何实现类似Stackoverflow的列表';用户名单?_C#_.net_Asp.net_Ajax_Webforms - Fatal编程技术网

C# 最佳实践:如何实现类似Stackoverflow的列表';用户名单?

C# 最佳实践:如何实现类似Stackoverflow的列表';用户名单?,c#,.net,asp.net,ajax,webforms,C#,.net,Asp.net,Ajax,Webforms,涉及的技术: ASP.NET Web窗体 Javascript(例如jQuery) 案例 为了更清楚,让我们以Stackoverflow用户列表为例。此列表可以在客户端进行操作。我可以搜索、翻页等等。显然,我们需要调用jQuery.ajax来检索给定搜索的每个页面的HTML。好吧现在我要问第一个问题: 在服务器端呈现jQuery.ajax响应的最佳方式是什么?我想我不能使用模板,所以我认为最明显的解决方案是创建HTML标记作为服务器控件,并将它们作为ASHX请求的结果呈现?这是最好的方法吗 很好

涉及的技术

  • ASP.NET Web窗体
  • Javascript(例如jQuery)
  • 案例

    为了更清楚,让我们以Stackoverflow
    用户列表为例。此列表可以在客户端进行操作。我可以搜索、翻页等等。显然,我们需要调用jQuery.ajax来检索给定搜索的每个页面的HTML。好吧现在我要问第一个问题:

    在服务器端呈现jQuery.ajax响应的最佳方式是什么?我想我不能使用模板,所以我认为最明显的解决方案是创建HTML标记作为服务器控件,并将它们作为ASHX请求的结果呈现?这是最好的方法吗

    很好。这解决了我们的另一个问题:

    当用户第一次进入
    作者列表时
    第一个列表页面应该已经来自服务器,可以吗?当然,我们可以呈现第一个页面以及一个ajax调用,但我不认为这样更好。这次我可以使用模板来呈现列表,但在案例1中无法重用此模板。我该怎么办

    现在是最后一个问题:

    现在我们有两种呈现策略:1)客户端和2)服务器。如何为2个渲染重用代码


    解决这些问题的最佳实践是什么?

    如果要在服务器上创建html标记,重用就很容易了。在这两种情况下,您都将html控件添加到父控件中,因此您只需在两个页面中创建一个可用的方法,该方法将父控件作为参数,并从CreateChildControls调用它


    如果要向客户端发送json数据,请仅在开发期间使用客户端呈现(在onload中使用ajax调用)。如果视图不会发生太多更改,则可以在必要时添加服务器端版本。在大多数情况下,应该可以用一种在jquery和.net中都能工作的风格编写代码,这样您就可以在不做太多更改的情况下从一个代码复制到另一个代码。

    我将创建一个名为“AuthorList.ascx”的用户控件,该控件以正确格式(即HTML)作为一个片段输出作者列表。(没有HEAD/HTML/BODY标签,只是普通的fragmet类型的东西,带有ASCX控件

    然后,我将按照正常方式创建我的作者列表页面,删除我刚刚在div中创建的新控件:

    <div id="author-list"><uc1:authorList runat="server" id="userList1" /></div>
    
    它允许您通过AJAX更新作者列表的内容,以用于后续请求,如搜索、筛选、分页等

    <%@ Page ... %>
    <%@ Register ... %>
    <uc1:authorList runat="server" id="userList1" />
    
    $('#author-list').load('path-to-the-second-aspx-page-containing-user-contor.aspx', {
        // args here
    });