2011-05-10 68 views
0

我有一个用户可以搜索各种项目的c#/ asp.net 4.0(不是MVC)网站。搜索/结果功能的工作原理如下:关于wcf和页面导航的设计问题

在搜索页面上,用户填写搜索条件(文本框,下拉列表等),然后单击提交按钮。 on_click事件处理程序会执行一些验证和/或错误检查。如果一切都检出,我创建一个对象来保存所有值并将对象放入会话中。然后我做了一个response.redirect到结果页面。在结果页面上,我读取会话中的对象并联系wcf服务并将对象传递给它。 wcf执行搜索并返回结果(如果有)并显示结果。

我很好奇,如果有更好的方法来做到这一点。它工作正常,但有些事情对此感觉不对。我不太想知道如何将对象加载到会话中。

我希望将对象(使用搜索标准)发送到wcf,然后执行重定向,使结果页面保持加载状态,直到从wcf服务获得响应。一旦我得到结果,请继续前进,并加载结果页面。

这可能吗?任何反馈/链接将不胜感激。

也不会有任何第三方使用我们的wcf服务,这是全部内部。

+0

难道你不只是做一个标准的形式发布到结果页面,并在那里构建你的搜索对象?如果你必须记住搜索,那么可能最好坚持与会议。 – stephenl 2011-05-10 16:36:51

回答

2

有三种方式可以做到这一点

  • 强似数据后使用简单的GET搜索页面的。搜索条件将通过URL传递,例如google。
  • Cross page post back - 自.NET 2.0起可用的功能。它将删除会话并重定向。您也可以使用Server.Transfer/Server.Execute
  • AJAX回调。您的搜索不会发布表单,而是直接致电该服务以获取结果。你可以使用ASP.NET script manager以及其他东西,或者使用一些轻量级的javascript框架,比如jQuery。您的WCF服务必须使用JSON编码公开webHttpEndpoint。