AjaxMethodAttribute.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:4k
源码类别:

Ajax

开发平台:

C#

  1. /*
  2.  * MS 06-04-11 added new AjaxMethod argument for async httpHandler usage
  3.  * 
  4.  * 
  5.  * 
  6.  */
  7. using System;
  8. namespace AjaxPro
  9. {
  10. /// <summary>
  11. /// This Attribute must be used to create a AJAX wrapper.
  12. /// <code>
  13. /// public class Test
  14. /// {
  15. /// [AjaxPro.AjaxMethod]
  16. /// public string HelloWorld(string username)
  17. /// {
  18. /// return "Hello " + username;
  19. /// }
  20. ///
  21. /// [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
  22. /// public bool SessionValueIsSet(string key)
  23. /// {
  24. /// return System.Web.HttpContext.Current.Session[key] != null;
  25. /// }
  26. /// }
  27. /// </code>
  28. /// </summary>
  29. [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
  30. public class AjaxMethodAttribute : Attribute
  31. {
  32. private bool useAsyncProcessing = false;
  33. private HttpSessionStateRequirement requireSessionState = HttpSessionStateRequirement.None;
  34. public AjaxMethodAttribute()
  35. {
  36. }
  37. /// <summary>
  38. /// Marks the method to be exported as an Ajax.NET Javascript function with the ability to access the SessionState.
  39. /// </summary>
  40. /// <param name="requireSessionState">The HttpSessionStateRequirement to use.</param>
  41. public AjaxMethodAttribute(HttpSessionStateRequirement requireSessionState)
  42. {
  43. this.requireSessionState = requireSessionState;
  44. }
  45. /// <summary>
  46. /// Marks the method to be exported as an Ajax.NET Javascript function with the ability to be processed as an async request on the server.
  47. /// </summary>
  48. /// <param name="useAsyncProcessing">The indicator if AsyncProcessing should be used.</param>
  49. public AjaxMethodAttribute(bool useAsyncProcessing)
  50. {
  51. this.useAsyncProcessing = useAsyncProcessing;
  52. }
  53. /// <summary>
  54. /// Marks the method to be exported as an Ajax.NET Javascript function with the ability to be processed as an async request on the server and to access the SessionState.
  55. /// </summary>
  56. /// <param name="requireSessionState">The HttpSessionStateRequirement to use.</param>
  57. /// <param name="useAsyncProcessing">The indicator if AsyncProcessing should be used.</param>
  58. public AjaxMethodAttribute(HttpSessionStateRequirement requireSessionState, bool useAsyncProcessing)
  59. {
  60. this.requireSessionState = requireSessionState;
  61. this.useAsyncProcessing = useAsyncProcessing;
  62. }
  63. #region Obsolete Constructors
  64. /// <summary>
  65. /// Marks the method to be exported as an Ajax.NET Javascript function with a different name.
  66. /// </summary>
  67. /// <param name="methodName">The name for the function to be used in Javascript.</param>
  68. [Obsolete("The recommended alternative is AjaxPro.AjaxNamespaceAttribute.", true)]
  69. public AjaxMethodAttribute(string methodName)
  70. {
  71. }
  72. [Obsolete("The recommended alternative is AjaxPro.AjaxServerCacheAttribute.", true)]
  73. public AjaxMethodAttribute(int cacheSeconds)
  74. {
  75. }
  76. [Obsolete("The recommended alternative is AjaxPro.AjaxServerCacheAttribute.", true)]
  77. public AjaxMethodAttribute(int cacheSeconds, HttpSessionStateRequirement requireSessionState)
  78. {
  79. }
  80. [Obsolete("The recommended alternative for methodName is AjaxPro.AjaxNamespaceAttribute.", true)]
  81. public AjaxMethodAttribute(string methodName, int cacheSeconds)
  82. {
  83. }
  84. [Obsolete("The recommended alternative for methodName is AjaxPro.AjaxNamespaceAttribute.", true)]
  85. public AjaxMethodAttribute(string methodName, int cacheSeconds, HttpSessionStateRequirement requireSessionState)
  86. {
  87. }
  88. [Obsolete("The recommended alternative for methodName is AjaxPro.AjaxNamespaceAttribute.", true)]
  89. public AjaxMethodAttribute(string methodName, HttpSessionStateRequirement requireSessionState)
  90. {
  91. }
  92. #endregion
  93. #region Internal Properties
  94. internal HttpSessionStateRequirement RequireSessionState
  95. {
  96. get{ return requireSessionState; }
  97. }
  98. internal bool UseAsyncProcessing
  99. {
  100. get { return useAsyncProcessing; }
  101. }
  102. #endregion
  103. }
  104. }