【发布时间】:2011-04-07 19:58:15
【问题描述】:
我正在改造一个带有 AJAX 功能的 .aspx 页面(使用 VB,而不是 C#)。代码隐藏使用从 Web 服务中提取的数据填充页面。该页面有两个以这种方式填充的面板(当然,使用不同的数据)。在整页刷新时,可能需要填充一个或两个面板。但是填充面板 2 可能需要很长时间,而且我需要能够在不刷新面板 2 的情况下更新面板 1。因此需要 AJAX(对吗?)
我想出的解决方案仍然是带有 .aspx.vb 代码隐藏的旧 .aspx 页面,但在混合中引入了一个通用处理程序 (.ashx) 页面。前两个组件在用户第一次访问或整个页面刷新时完成工作,但是当调用 AJAX 时,请求由 .ashx 页面处理。
第一个问题:这是健全的架构吗?我还没有在网上找到像我这样的情况。最初,我想通过让代码隐藏实现 IHttpRequest,然后提供“ProcessRequest”和“IsReusable”方法,将 .aspx 页面放入 AJAX 处理程序,但我发现我无法将对页面的定期访问与 AJAX 分开请求,所以我的 AJAX 处理程序甚至在第一次访问页面时就接管了。第二个问题:我是否认为这种方法(使 .aspx 页面作为 AJAX 处理程序具有双重职责)永远行不通?是否无法判断我们收到的是全页请求还是部分页 (AJAX) 请求?
如果架构是好的,那么我需要在.ashx文件中动态生成大量的HTML,对吧?如果这是正确的,我应该将 HTML 发送回客户端,还是应该以某种方式对其进行编码?我听说过 JSON 加密,但还没有弄清楚如何使用它。那么,第三个问题:“context.Response.Write”是唯一将数据发送回客户端的管道吗?如果是这样,我应该发回 HTML 还是某种 JSON 编码的对象?
提前致谢。
【问题讨论】:
-
几个问题。是否有特定的设计限制了为什么使用
.ashx处理程序通过直接的.asmxwebservice 调用来执行异步操作?客户端 JS 模板是一个可行的选择吗?如果是,您可以拥有一个返回 JSON 数据的 Web 服务,您可以使用 JavaScript 将其格式化为 HTML 客户端,并将新内容插入 DOM。 -
我对 .asmx 不熟悉(只需查一下!),但这个等式的 Web 服务部分非常简单。至于 JSON 数据,是的,我可以在客户端使用 javascript 将其格式化为 HTML,我只是还没有学会如何生成 JSON 编码的对象。
-
您使用的是哪个版本的 ASP.NET?