【发布时间】:2010-08-23 15:54:04
【问题描述】:
我正在我的管理页面中格式化 html,并希望将此 html 作为响应对象的一部分发送。我正在使用 Response.Redirect 重定向到 HttpHandler (Preview.ashx),但是我应该如何在响应中发送该 html 并使用我的 Handler 中的 HttpContext 对象从 httphandler 读取它?
【问题讨论】:
标签: c# asp.net httphandler
我正在我的管理页面中格式化 html,并希望将此 html 作为响应对象的一部分发送。我正在使用 Response.Redirect 重定向到 HttpHandler (Preview.ashx),但是我应该如何在响应中发送该 html 并使用我的 Handler 中的 HttpContext 对象从 httphandler 读取它?
【问题讨论】:
标签: c# asp.net httphandler
您需要将 HTML 存储在某处,并将密钥发送到 QueryString 上的处理程序。例如,您可以使用 GUID 键将其置于会话中,并在 QueryString 上发送 GUID,例如 Preview.ashx?htmlId=000...
您也可以将其存储在数据库、缓存或应用程序中。只是一些想法......
【讨论】:
如何将 html 作为响应标头的一部分作为 namevaluecollection 发送,我可以通过查询字符串发送 namevaluecollection 的键,并且在处理程序中我可以获取每个键并在响应标头中搜索值 (html)?那会是一种有效的方法吗?
【讨论】:
由于用户可能已登录(管理面板),您可以将 html 放入会话中,稍后在处理程序中将其拉出。 不过,您需要在 ashx 中实现 IRequiresSessionState。 http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx
【讨论】:
我想你可能想看看 HttpServerUtility.Transfer() 方法。虽然 Response.Redirect 将创建对客户端的响应,指示客户端导航到新页面(在您的情况下为 .ashx 页面),但服务器传输将对页面执行“服务器端重定向”,并且您的服务器状态将为维护,以便您可以将 html 存储在上下文变量中,在该变量中可以通过 ashx 处理程序中的逻辑进行检索。
【讨论】: