【发布时间】:2011-01-22 14:44:06
【问题描述】:
我知道 MVC 控制器非常擅长处理 JSON 格式的 AJAX 请求,但是是否有任何内置的 ASP.NET 功能可以用于来自普通旧 Web 表单站点的这些类型调用?
【问题讨论】:
标签: asp.net ajax json asp.net-ajax
我知道 MVC 控制器非常擅长处理 JSON 格式的 AJAX 请求,但是是否有任何内置的 ASP.NET 功能可以用于来自普通旧 Web 表单站点的这些类型调用?
【问题讨论】:
标签: asp.net ajax json asp.net-ajax
在这种情况下,我首选的方法是使用通用 Web 处理程序 (.ashx) 和 JSON.net http://james.newtonking.com/json
它简单、快速且轻便。
一个简单的例子是:
public void ProcessRequest(HttpContext context)
{
string jsonOutput = string.Empty;
context.Response.ContentType = "application/json";
using (var db = new MyDBContext())
{
var dbResult = db.myobject.select();
jsonOutput = Newtonsoft.Json.JsonConvert.SerializeObject(dbResult);
}
context.Response.Write(jsonOutput);
}
【讨论】:
Web API 可以很好地与 Web 表单配合使用。 http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-aspnet-web-forms
【讨论】:
如果您在服务器上安装了 .NET 3.5,则可以利用框架附带的 JSON serialization tools。
【讨论】:
您可以使用内置的 ASP.NET AJAX。
选项 1 - 使用网络服务(如果您希望功能可重复使用):
选项 2 - 使用页面方法(如果您希望在单个页面上使用该功能而不创建 Web 服务):
在任何一种情况下,JSON 都将用于数据传输。
这是一个广泛的tutorial 和一些代码示例。
然而,ASP.NET AJAX 经常被指责为效率低下——例如,它生成的 JS 往往相当大。因此,如果您关心性能,则需要对其进行彻底的测试。
你也可以看看这个帖子:.NET AJAX Calls to ASMX or ASPX or ASHX?
【讨论】:
使用通用网络处理程序。即 ashx。这些甚至比 MVC 动作还要快。
【讨论】: