ASP.NET页面中JQuery的动态数据

时间:2012-06-27 07:10:13

标签: c# jquery asp.net ajax

问题

我有一些页面需要网站的动态数据来为用户生成输出。

一个简单的解决方案是aspx(php,...)页面,用于生成数据并创建另一个html页面,用作GUI从第一页检索数据并将其显示给用户。在这个方法中,我可以调用我的GUI页面,例如form1.aspx和我的数据页面form1.json.aspx。 虽然我个人喜欢这种方法,但在为它创建组件时却不合适。

目前我正在使用的另一种方法是使用相同的GUI页面调用本身和查询字符串来检索数据。此页面应检查该查询字符串,如果存在,则仅生成数据并从页面中删除其他所有内容。作为这个方法的一个例子,如果我调用我的页面form1.aspx,检索数据,我需要像form1.aspx一样调用它?JSON

这是我正在做的一个例子:

protected void Page_Load(object sender, EventArgs e) {
    if (Request.QueryString.ToString().IndexOf("JSON") == 0){
        this.Controls.Clear();
        Response.Clear();
        // send pure data to client
    } else {
      // render page as GUI
    }
}

但是,如果我从某个模板页面添加母版页和/或继承我的页面,则此方法会变得太乱。母版页只能在Page_PreInit中删除,这会增加另一种额外的方法。

安全控件导致另一个问题,如果用户长时间打开页面直到会话到期,任何检索数据的尝试都将失败,因为安全模块会将请求重定向到登录页面。

下一个问题是我无法在包中整合我的组件,因为它需要在页面中进行修改(删除母版页,清除页面组件......)。

我在寻找什么:

1-我正在寻找一种解决方案,我可以调用我的页面并获取纯数据(JSON或XML格式),这样做运行服务器端方法生成数据,所以我不必担心什么另一位设计师放入他们的母版页或模板。

2-我认为可以使用axd扩展来执行此操作,但我对此没有任何线索,也找不到帮助文档。

3-有没有更好的方法来做到这一点。任何建议或解决方案,以提高这一点非常感谢。

2 个答案:

答案 0 :(得分:2)

其他方法是使用HTTP处理程序。实现IHttpHandler接口并在Web.config文件中注册您的实现。稍后使用jQuery($ .get / $ .post)调用它:

修改 正如OP指出的那样,为了在页面方法中访问会话状态,您应该以这种方式使用WebMethodAttribute

[WebMethod(EnableSession = true)]

答案 1 :(得分:0)

我认为您可以使用webservice而不是aspx页面来返回JSON或XML字符串,然后调用程序页面(任何aspx页面)将在进程成功后响应。

因此,使用此Web服务,任何第三方页面都可以访问您的服务器端方法。

创建网络服务请查看此链接:Create and use Asp.net web service basic

此致