0

我有一个 ASPX 页面。在顶部我显示 5 个类别(例如:笔、书、鞋、手机、镜子)当我单击任何类别时,我想在标题下方显示该类别下的产品。我不想为此重新加载整个页面。我想在点击时保持我的页面原样(页眉、页脚和侧面板),除了图像的中心位置(可能是要显示的 DIV 或表格)产品)。最好的方法是什么?。我不想使用 ASP.NET Ajax 更新面板。我已经在我的项目中使用 jQuery。那么无论如何用 jQuery 来做这件事吗?请指教。在此先感谢

4

4 回答 4

3

我建议阅读

或者

根据您的 Web 应用程序运行的位置(Intranet 而不是 Internet),使用 UpdatePanel 可能是实现 AJAX 样式功能的更快选择。

于 2009-05-22T11:46:59.203 回答
1

据我说,使用包裹在Repeater/DataGrid/GridView 周围的UpdatePanel 将是一种更容易实现的方法。

它也可以用 jQuery 来完成。它包括CateogryId使用 ajax 向服务器发送请求,获取产品的JSON作为响应,以及使用 DOM 操作用 JSON 数据填充 div。

编辑:使用 JSON,可以以面向对象的方式以易于阅读的文本格式表示复杂数据。看看这个 -

var person = {
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 };

person是一个 JSON 对象,包含以下属性:“firstName”、“lastName”等。您可以使用person.firstNameperson.lastName等访问这些属性。

这是 JSON 的一个示例,您可以利用它创建自己的包含产品信息的 JSON 字符串,并将其以数组的形式发送给客户端。简而言之,它将是一个像这样的对象数组 -

var persons = [person1, person2, person3, ...]; //person1, person2, etc. are objects like the person object declared above.

您可以使用DataContractJsonSerializer类(在 Framework 3.5 中)对 JSON 对象进行序列化/反序列化。如果您使用的是<3.5 的Framework,您可以使用AjaxToolKit的JavaScriptSerializer类来做同样的事情。

于 2009-05-22T11:40:55.970 回答
1

正如 Kirtan 提到的,最简单的答案使用更新面板。

如果您不想走那条路,那么您可以使用 jQuery 对 IHttpHandler 进行 Ajax 调用,该 IHttpHandler 返回填充您要更新的面板所需的数据。

步骤如下:

  • 使用 jQuery 调用“ .ashx”Ajax 处理程序。
  • 让您的“ .ashx”文件以您选择的格式生成响应。这可以是 JSON 或 XML(如果您希望 JavaScript 解析出响应并生成列表),或者是要添加到页面的 HTML 内容本身。
  • jQuery 将接收来自您的处理程序的响应,并使用适当的数据填充您的面板。

网上有一些关于如何使用 IHttpHander 的教程。基本上它是一个非常简单的接口,ASP.NET 的 " Page" 类派生自。它比Page类轻得多,因此您可以获得比 UpdatePanel 更好的性能,但是,与大多数性能提升技术一样,您的代码稍微复杂一些。

这是有关如何使用 IHttpHandler类的教程。

于 2009-05-22T11:48:12.713 回答
0

您还可以考虑一个“快速而肮脏”的解决方案:在您的页面代码隐藏中,实现 ICallbackEventHandler,并返回一个 html 块,您将其填充到您的 div 或 table 中。

更新:请查看http://msdn.microsoft.com/en-us/library/ms178208.aspx,了解有关实现此功能所需的更多详细信息。

于 2009-05-22T12:45:35.250 回答