我知道MVC控制器非常擅长服务JSON格式的AJAX请求,但是有没有内置的ASP.NET功能可以用于这些类型的普通旧式Web表单调用?如何在Web窗体中使用JSON来服务AJAX调用?
回答
您可以使用内置的ASP.NET AJAX。
选项1 - 使用Web服务(如果你想要的功能可重用):
- 创建一个Web服务(的.asmx)用[ScriptService]属性,
- 添加到您的网页并将Web服务添加到其服务集合中,使用ScriptManager在yor页面中生成的JavaScript代理
- 。
选项2 - 使用页面方法(如果您想在不创建一个Web服务的单页上的功能):
- 定义在你的页面的静态方法,添加[WebMethod]属性给他们,
- 使用EnablePageMethods =“true”添加ScriptManager,
- 使用PageMethods对象从JavaScript调用这些方法。
无论哪种情况,JSON都将用于数据传输。
这是一个广泛的tutorial与一些代码示例。
但是,ASP.NET AJAX经常被归咎于效率低下 - 例如,它生成的JS往往会相当大。所以,如果你关心性能,你会想要彻底地测试它。
您也可以看看这个线程:.NET AJAX Calls to ASMX or ASPX or ASHX?
使用通用web处理程序。即ashx。这些速度甚至比操作的MVC更快。
如果你有.NET 3.5安装在服务器上,你可以采取与框架附带的JSON serialization tools的优势。
Web API适用于Web窗体。 http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-aspnet-web-forms
理论上可以。但是,在实际使用中,您可能会遇到锁定会话的问题:默认情况下,来自Web表单页面的每个请求都与用户会话相关联,因此您只能逐个执行Ajax请求。它对您的项目可能并不重要 – 2016-05-13 05:44:45
您可以对大多数请求使用只读会话,对于登录/注销可以使用读写。它可以防止锁定问题。会话默认情况下未启用Web API。我必须从Application_PostAuthorizeRequest中调用方法:HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.ReadOnly); – 2016-05-13 08:54:53
我很担心,因为我们试图在传统的ASP.NET Web表单中包含一个Web API模块。确实,Web API默认没有会话,但是当它与Web Form结合使用时,它确实没有会话。我们甚至可以从API请求中读取会话信息。通常情况下,这是不是一个问题,直到我们有一些沉重的API调用 – 2016-05-13 09:06:32
我在这种情况下首选的方法是使用一个通用的网络处理器(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);
}
- 1. 在asp.net web窗体中的多线程web服务调用
- 2. 如何从ajax调用.NET Web服务?
- 3. 如何在角度js中使用web worker来调用服务?
- 4. 使用Ajax调用web服务
- 5. 调用Web服务的.asmx使用AJAX
- 6. 使用MVC的Ajax(调用Web服务)
- 7. 使用jQuery调用Restful Web服务ajax
- 8. 使用jquery调用SAP Web服务ajax
- 9. AJAX调用Web服务
- 10. 使用JQuery调用JSON Web服务
- 11. 如何使用ajax调用在服务总线上发布的Web服务?
- 12. 调用使用JQuery Ajax调用休息Web服务,Web服务返回JSON字符串
- 13. 如何使用AJAX调用特定的Web服务方法?
- 14. 在SSL Web服务器上调用JQuery AJAX Web服务
- 15. 如何使用Java调用Web服务
- 16. 如何使用KSOAP调用Web服务?
- 17. 如何使用XDocument调用Web服务?
- 18. 如何使用HttpWebRequest调用Web服务
- 19. 如何在ajax中调用RESTful Web服务?
- 20. 如何在android中通过ajax调用本地restful web服务?
- 21. 如何在VB6中调用Web服务?
- 22. 如何在android中调用web服务
- 23. 如何在android中调用web服务
- 24. 如何使用Apache的骆驼来调用RESTful Web服务
- 25. 如何使用控制器来调用REST Web服务?
- 26. 在asmx web服务中使用C#窗体变量
- 27. 从MFC窗体应用程序调用Web服务器
- 28. 如何使jQuery的移动到ASP.NET Web服务的AJAX调用
- 29. 在Windows服务中调用Web服务
- 30. 如何使用eclipse调试Web服务
页的方法是溶液。 – ProfK 2011-08-04 17:55:08