我有一个 ASPX 页面。在顶部我显示 5 个类别(例如:笔、书、鞋、手机、镜子)当我单击任何类别时,我想在标题下方显示该类别下的产品。我不想为此重新加载整个页面。我想在点击时保持我的页面原样(页眉、页脚和侧面板),除了图像的中心位置(可能是要显示的 DIV 或表格)产品)。最好的方法是什么?。我不想使用 ASP.NET Ajax 更新面板。我已经在我的项目中使用 jQuery。那么无论如何用 jQuery 来做这件事吗?请指教。在此先感谢
4 回答
我建议阅读
或者
根据您的 Web 应用程序运行的位置(Intranet 而不是 Internet),使用 UpdatePanel 可能是实现 AJAX 样式功能的更快选择。
据我说,使用包裹在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.firstName
、person.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类来做同样的事情。
正如 Kirtan 提到的,最简单的答案是使用更新面板。
如果您不想走那条路,那么您可以使用 jQuery 对 IHttpHandler 进行 Ajax 调用,该 IHttpHandler 返回填充您要更新的面板所需的数据。
步骤如下:
- 使用 jQuery 调用“
.ashx
”Ajax 处理程序。 - 让您的“
.ashx
”文件以您选择的格式生成响应。这可以是 JSON 或 XML(如果您希望 JavaScript 解析出响应并生成列表),或者是要添加到页面的 HTML 内容本身。 - jQuery 将接收来自您的处理程序的响应,并使用适当的数据填充您的面板。
网上有一些关于如何使用 IHttpHander 的教程。基本上它是一个非常简单的接口,ASP.NET 的 " Page
" 类派生自。它比Page
类轻得多,因此您可以获得比 UpdatePanel 更好的性能,但是,与大多数性能提升技术一样,您的代码稍微复杂一些。
这是有关如何使用 IHttpHandler类的教程。
您还可以考虑一个“快速而肮脏”的解决方案:在您的页面代码隐藏中,实现 ICallbackEventHandler,并返回一个 html 块,您将其填充到您的 div 或 table 中。
更新:请查看http://msdn.microsoft.com/en-us/library/ms178208.aspx,了解有关实现此功能所需的更多详细信息。