Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

RTM commit

  • Loading branch information...
commit 6da2b28532ec4df5fa7b40bd91c0a5939b38e33c 0 parents
@amarraja amarraja authored
Showing with 19,875 additions and 0 deletions.
  1. +361 −0 WebRuntime.sln
  2. +36 −0 mvc3/src/CustomDictionary.xml
  3. +236 −0 mvc3/src/FxCopRules.ruleset
  4. +12 −0 mvc3/src/GlobalAssemblyInfo.cs
  5. +70 −0 mvc3/src/MicrosoftMvcAjaxScript/AjaxContext.cs
  6. +3 −0  mvc3/src/MicrosoftMvcAjaxScript/AjaxEventHandler.cs
  7. +19 −0 mvc3/src/MicrosoftMvcAjaxScript/AjaxOptions.cs
  8. +39 −0 mvc3/src/MicrosoftMvcAjaxScript/AsyncForm.cs
  9. +17 −0 mvc3/src/MicrosoftMvcAjaxScript/AsyncHyperlink.cs
  10. +3 −0  mvc3/src/MicrosoftMvcAjaxScript/CancellableAjaxEventHandler.cs
  11. +7 −0 mvc3/src/MicrosoftMvcAjaxScript/InsertionMode.cs
  12. +64 −0 mvc3/src/MicrosoftMvcAjaxScript/MicrosoftMvcAjaxScript.csproj
  13. +273 −0 mvc3/src/MicrosoftMvcAjaxScript/MvcHelpers.cs
  14. +5 −0 mvc3/src/MicrosoftMvcAjaxScript/Properties/Script.jst
  15. +217 −0 mvc3/src/MicrosoftMvcValidationScript/FieldContext.cs
  16. +266 −0 mvc3/src/MicrosoftMvcValidationScript/FormContext.cs
  17. +18 −0 mvc3/src/MicrosoftMvcValidationScript/JsonValidationField.cs
  18. +18 −0 mvc3/src/MicrosoftMvcValidationScript/JsonValidationOptions.cs
  19. +15 −0 mvc3/src/MicrosoftMvcValidationScript/JsonValidationRule.cs
  20. +74 −0 mvc3/src/MicrosoftMvcValidationScript/MicrosoftMvcValidationScript.csproj
  21. +23 −0 mvc3/src/MicrosoftMvcValidationScript/NumberValidator.cs
  22. +12 −0 mvc3/src/MicrosoftMvcValidationScript/Properties/Script.jst
  23. +30 −0 mvc3/src/MicrosoftMvcValidationScript/RangeValidator.cs
  24. +28 −0 mvc3/src/MicrosoftMvcValidationScript/RegularExpressionValidator.cs
  25. +103 −0 mvc3/src/MicrosoftMvcValidationScript/RequiredValidator.cs
  26. +29 −0 mvc3/src/MicrosoftMvcValidationScript/StringLengthValidator.cs
  27. +11 −0 mvc3/src/MicrosoftMvcValidationScript/Validation.cs
  28. +13 −0 mvc3/src/MicrosoftMvcValidationScript/ValidationContext.cs
  29. +32 −0 mvc3/src/MicrosoftMvcValidationScript/ValidationUtil.cs
  30. +6 −0 mvc3/src/MicrosoftMvcValidationScript/Validator.cs
  31. +6 −0 mvc3/src/MicrosoftMvcValidationScript/ValidatorCreator.cs
  32. +24 −0 mvc3/src/MicrosoftMvcValidationScript/ValidatorRegistry.cs
  33. +12 −0 mvc3/src/MvcBuildTasks/Mvc/Build/AreaInfo.cs
  34. +9 −0 mvc3/src/MvcBuildTasks/Mvc/Build/AreaType.cs
  35. +123 −0 mvc3/src/MvcBuildTasks/Mvc/Build/CopyAreaManifests.cs
  36. +66 −0 mvc3/src/MvcBuildTasks/Mvc/Build/CreateAreaManifest.cs
  37. +28 −0 mvc3/src/MvcBuildTasks/Mvc/Build/FileSystem.cs
  38. +14 −0 mvc3/src/MvcBuildTasks/Mvc/Build/IFileSystem.cs
  39. +78 −0 mvc3/src/MvcBuildTasks/MvcBuildTasks.csproj
  40. +20 −0 mvc3/src/MvcBuildTasks/Properties/AssemblyInfo.cs
  41. +15 −0 mvc3/src/MvcFutures/GlobalSuppressions.cs
  42. +129 −0 mvc3/src/MvcFutures/Internal/ExpressionHelper.cs
  43. +21 −0 mvc3/src/MvcFutures/Mvc/ActionLinkAreaAttribute.cs
  44. +21 −0 mvc3/src/MvcFutures/Mvc/AjaxOnlyAttribute.cs
  45. +32 −0 mvc3/src/MvcFutures/Mvc/AreaHelpers.cs
  46. +62 −0 mvc3/src/MvcFutures/Mvc/AsyncManagerExtensions.cs
  47. +73 −0 mvc3/src/MvcFutures/Mvc/ButtonBuilder.cs
  48. +147 −0 mvc3/src/MvcFutures/Mvc/ButtonsAndLinkExtensions.cs
  49. +162 −0 mvc3/src/MvcFutures/Mvc/CachedAssociatedMetadataProvider`1.cs
  50. +85 −0 mvc3/src/MvcFutures/Mvc/CachedDataAnnotationsMetadataAttributes.cs
  51. +246 −0 mvc3/src/MvcFutures/Mvc/CachedDataAnnotationsModelMetadata.cs
  52. +14 −0 mvc3/src/MvcFutures/Mvc/CachedDataAnnotationsModelMetadataProvider.cs
  53. +42 −0 mvc3/src/MvcFutures/Mvc/CachedExpressionCompiler.cs
  54. +348 −0 mvc3/src/MvcFutures/Mvc/CachedModelMetadata`1.cs
  55. +31 −0 mvc3/src/MvcFutures/Mvc/ContentTypeAttribute.cs
  56. +29 −0 mvc3/src/MvcFutures/Mvc/ControllerExtensions.cs
  57. +107 −0 mvc3/src/MvcFutures/Mvc/Controls/ActionLink.cs
  58. +181 −0 mvc3/src/MvcFutures/Mvc/Controls/DropDownList.cs
  59. +8 −0 mvc3/src/MvcFutures/Mvc/Controls/EncodeType.cs
  60. +8 −0 mvc3/src/MvcFutures/Mvc/Controls/Hidden.cs
  61. +111 −0 mvc3/src/MvcFutures/Mvc/Controls/Label.cs
  62. +103 −0 mvc3/src/MvcFutures/Mvc/Controls/MvcControl.cs
  63. +131 −0 mvc3/src/MvcFutures/Mvc/Controls/MvcInputControl.cs
  64. +8 −0 mvc3/src/MvcFutures/Mvc/Controls/Password.cs
  65. +79 −0 mvc3/src/MvcFutures/Mvc/Controls/Repeater.cs
  66. +39 −0 mvc3/src/MvcFutures/Mvc/Controls/RepeaterItem.cs
  67. +44 −0 mvc3/src/MvcFutures/Mvc/Controls/RouteValues.cs
  68. +8 −0 mvc3/src/MvcFutures/Mvc/Controls/TextBox.cs
  69. +85 −0 mvc3/src/MvcFutures/Mvc/CookieTempDataProvider.cs
  70. +25 −0 mvc3/src/MvcFutures/Mvc/CookieValueProviderFactory.cs
  71. +24 −0 mvc3/src/MvcFutures/Mvc/CopyAsyncParametersAttribute.cs
  72. +55 −0 mvc3/src/MvcFutures/Mvc/CreditCardAttribute.cs
  73. +34 −0 mvc3/src/MvcFutures/Mvc/CssExtensions.cs
  74. +60 −0 mvc3/src/MvcFutures/Mvc/DeserializeAttribute.cs
  75. +60 −0 mvc3/src/MvcFutures/Mvc/DynamicReflectionObject.cs
  76. +73 −0 mvc3/src/MvcFutures/Mvc/DynamicViewDataDictionary.cs
  77. +19 −0 mvc3/src/MvcFutures/Mvc/DynamicViewPage.cs
  78. +13 −0 mvc3/src/MvcFutures/Mvc/DynamicViewPage`1.cs
  79. +41 −0 mvc3/src/MvcFutures/Mvc/ElementalValueProvider.cs
  80. +34 −0 mvc3/src/MvcFutures/Mvc/EmailAddressAttribute.cs
  81. +70 −0 mvc3/src/MvcFutures/Mvc/Error.cs
  82. +40 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/BinaryExpressionFingerprint.cs
  83. +126 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/CachedExpressionCompiler.cs
  84. +28 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/ConditionalExpressionFingerprint.cs
  85. +32 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/ConstantExpressionFingerprint.cs
  86. +28 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/DefaultExpressionFingerprint.cs
  87. +43 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/ExpressionFingerprint.cs
  88. +79 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/ExpressionFingerprintChain.cs
  89. +220 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/FingerprintingExpressionVisitor.cs
  90. +49 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/HashCodeCombiner.cs
  91. +7 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/Hoisted`2.cs
  92. +32 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/HoistingExpressionVisitor.cs
  93. +40 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/IndexExpressionFingerprint.cs
  94. +28 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/LambdaExpressionFingerprint.cs
  95. +37 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/MemberExpressionFingerprint.cs
  96. +40 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/MethodCallExpressionFingerprint.cs
  97. +36 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/ParameterExpressionFingerprint.cs
  98. +36 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/TypeBinaryExpressionFingerprint.cs
  99. +40 −0 mvc3/src/MvcFutures/Mvc/ExpressionUtil/UnaryExpressionFingerprint.cs
  100. +91 −0 mvc3/src/MvcFutures/Mvc/FileExtensionsAttribute.cs
  101. +37 −0 mvc3/src/MvcFutures/Mvc/FormExtensions.cs
  102. +527 −0 mvc3/src/MvcFutures/Mvc/Html/HtmlHelperExtensions.cs
  103. +7 −0 mvc3/src/MvcFutures/Mvc/HtmlButtonType.cs
  104. +13 −0 mvc3/src/MvcFutures/Mvc/IMachineKey.cs
  105. +68 −0 mvc3/src/MvcFutures/Mvc/ImageExtensions.cs
  106. +29 −0 mvc3/src/MvcFutures/Mvc/Lazy`1.cs
  107. +62 −0 mvc3/src/MvcFutures/Mvc/LinkBuilder.cs
  108. +43 −0 mvc3/src/MvcFutures/Mvc/LinkExtensions.cs
  109. +18 −0 mvc3/src/MvcFutures/Mvc/MachineKeyWrapper.cs
  110. +88 −0 mvc3/src/MvcFutures/Mvc/MailToExtensions.cs
  111. +20 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ArrayModelBinderProvider.cs
  112. +15 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ArrayModelBinder`1.cs
  113. +69 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/BinaryDataModelBinderProvider.cs
  114. +12 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/BindNeverAttribute.cs
  115. +12 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/BindRequiredAttribute.cs
  116. +9 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/BindingBehavior.cs
  117. +27 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/BindingBehaviorAttribute.cs
  118. +20 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/CollectionModelBinderProvider.cs
  119. +122 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/CollectionModelBinderUtil.cs
  120. +116 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/CollectionModelBinder`1.cs
  121. +46 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ComplexModelDto.cs
  122. +34 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ComplexModelDtoModelBinder.cs
  123. +23 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ComplexModelDtoModelBinderProvider.cs
  124. +28 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ComplexModelDtoResult.cs
  125. +20 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/DictionaryModelBinderProvider.cs
  126. +14 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/DictionaryModelBinder`2.cs
  127. +63 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ExtensibleModelBinderAdapter.cs
  128. +22 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ExtensibleModelBinderAttribute.cs
  129. +135 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ExtensibleModelBindingContext.cs
  130. +112 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/GenericModelBinderProvider.cs
  131. +8 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/IExtensibleModelBinder.cs
  132. +24 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/KeyValuePairModelBinderProvider.cs
  133. +28 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/KeyValuePairModelBinderUtil.cs
  134. +38 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/KeyValuePairModelBinder`2.cs
  135. +88 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderConfig.cs
  136. +7 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderErrorMessageProvider.cs
  137. +8 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderProvider.cs
  138. +147 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderProviderCollection.cs
  139. +16 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderProviderOptionsAttribute.cs
  140. +29 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderProviders.cs
  141. +110 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelBinderUtil.cs
  142. +28 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelValidatedEventArgs.cs
  143. +28 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelValidatingEventArgs.cs
  144. +175 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/ModelValidationNode.cs
  145. +228 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/MutableObjectModelBinder.cs
  146. +24 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/MutableObjectModelBinderProvider.cs
  147. +59 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/SimpleModelBinderProvider.cs
  148. +52 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/TypeConverterModelBinder.cs
  149. +25 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/TypeConverterModelBinderProvider.cs
  150. +37 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/TypeMatchModelBinder.cs
  151. +16 −0 mvc3/src/MvcFutures/Mvc/ModelBinding/TypeMatchModelBinderProvider.cs
  152. +46 −0 mvc3/src/MvcFutures/Mvc/ModelCopier.cs
  153. +118 −0 mvc3/src/MvcFutures/Mvc/MvcSerializer.cs
  154. +39 −0 mvc3/src/MvcFutures/Mvc/NameExtensions.cs
  155. +96 −0 mvc3/src/MvcFutures/Mvc/RadioExtensions.cs
  156. +59 −0 mvc3/src/MvcFutures/Mvc/ReaderWriterCache`2.cs
  157. +14 −0 mvc3/src/MvcFutures/Mvc/Resources/ActionType.cs
  158. +104 −0 mvc3/src/MvcFutures/Mvc/Resources/AjaxHelperExtensions.cs
  159. +62 −0 mvc3/src/MvcFutures/Mvc/Resources/AtomEntryActionResult.cs
  160. +62 −0 mvc3/src/MvcFutures/Mvc/Resources/AtomFeedActionResult.cs
  161. +62 −0 mvc3/src/MvcFutures/Mvc/Resources/AtomServiceDocumentActionResult.cs
  162. +56 −0 mvc3/src/MvcFutures/Mvc/Resources/DataContractJsonActionResult.cs
  163. +56 −0 mvc3/src/MvcFutures/Mvc/Resources/DataContractXmlActionResult.cs
  164. +305 −0 mvc3/src/MvcFutures/Mvc/Resources/DefaultFormatHelper.cs
  165. +12 −0 mvc3/src/MvcFutures/Mvc/Resources/DefaultFormatManager.cs
  166. +34 −0 mvc3/src/MvcFutures/Mvc/Resources/FormatHelper.cs
  167. +105 −0 mvc3/src/MvcFutures/Mvc/Resources/FormatManager.cs
  168. +123 −0 mvc3/src/MvcFutures/Mvc/Resources/HtmlHelperExtensions.cs
  169. +62 −0 mvc3/src/MvcFutures/Mvc/Resources/HttpRequestBaseExtensions.cs
  170. +51 −0 mvc3/src/MvcFutures/Mvc/Resources/IEnumerableExtensions.cs
  171. +27 −0 mvc3/src/MvcFutures/Mvc/Resources/IRequestFormatHandler.cs
  172. +41 −0 mvc3/src/MvcFutures/Mvc/Resources/IResponseFormatHandler.cs
  173. +41 −0 mvc3/src/MvcFutures/Mvc/Resources/JsonFormatHandler.cs
  174. +47 −0 mvc3/src/MvcFutures/Mvc/Resources/MultiFormatActionResult.cs
  175. +22 −0 mvc3/src/MvcFutures/Mvc/Resources/RequestContextExtensions.cs
  176. +159 −0 mvc3/src/MvcFutures/Mvc/Resources/ResourceControllerFactory.cs
  177. +42 −0 mvc3/src/MvcFutures/Mvc/Resources/ResourceErrorActionResult.cs
  178. +80 −0 mvc3/src/MvcFutures/Mvc/Resources/ResourceModelBinder.cs
  179. +26 −0 mvc3/src/MvcFutures/Mvc/Resources/ResourceRedirectToRouteResult.cs
  180. +124 −0 mvc3/src/MvcFutures/Mvc/Resources/RouteCollectionExtensions.cs
  181. +47 −0 mvc3/src/MvcFutures/Mvc/Resources/UriHelperExtensions.cs
  182. +181 −0 mvc3/src/MvcFutures/Mvc/Resources/WebApiEnabledAttribute.cs
  183. +41 −0 mvc3/src/MvcFutures/Mvc/Resources/XmlFormatHandler.cs
  184. +42 −0 mvc3/src/MvcFutures/Mvc/ScriptExtensions.cs
  185. +60 −0 mvc3/src/MvcFutures/Mvc/SerializationExtensions.cs
  186. +11 −0 mvc3/src/MvcFutures/Mvc/SerializationMode.cs
  187. +15 −0 mvc3/src/MvcFutures/Mvc/ServerVariablesValueProviderFactory.cs
  188. +29 −0 mvc3/src/MvcFutures/Mvc/SessionValueProviderFactory.cs
  189. +19 −0 mvc3/src/MvcFutures/Mvc/SkipBindingAttribute.cs
  190. +62 −0 mvc3/src/MvcFutures/Mvc/TempDataValueProviderFactory.cs
  191. +28 −0 mvc3/src/MvcFutures/Mvc/TypeDescriptorHelper.cs
  192. +34 −0 mvc3/src/MvcFutures/Mvc/TypeHelpers.cs
  193. +34 −0 mvc3/src/MvcFutures/Mvc/UrlAttribute.cs
  194. +35 −0 mvc3/src/MvcFutures/Mvc/ValueProviderUtil.cs
  195. +35 −0 mvc3/src/MvcFutures/Mvc/ViewExtensions.cs
  196. +286 −0 mvc3/src/MvcFutures/MvcFutures.csproj
  197. +12 −0 mvc3/src/MvcFutures/Properties/AssemblyInfo.cs
  198. +486 −0 mvc3/src/MvcFutures/Resources/MvcResources.Designer.cs
  199. +261 −0 mvc3/src/MvcFutures/Resources/MvcResources.resx
  200. +20 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Boolean.ascx
  201. +16 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Collection.ascx
  202. +12 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Decimal.ascx
  203. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/EmailAddress.ascx
  204. +4 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/HiddenInput.ascx
  205. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Html.ascx
  206. +25 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Object.ascx
  207. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/String.ascx
  208. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Url.ascx
  209. +25 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/Boolean.ascx
  210. +16 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/Collection.ascx
  211. +12 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/Decimal.ascx
  212. +18 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/HiddenInput.ascx
  213. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/MultilineText.ascx
  214. +27 −0 mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/Object.ascx
  215. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/Password.ascx
  216. +2 −0  mvc3/src/MvcFuturesFiles/DefaultTemplates/EditorTemplates/String.ascx
  217. +371 −0 mvc3/src/MvcFuturesFiles/MvcDiagnostics.aspx
  218. +67 −0 mvc3/src/MvcFuturesFiles/MvcFuturesFiles.csproj
  219. +128 −0 mvc3/src/MvcFuturesFiles/iismap.vbs
  220. +20 −0 mvc3/src/MvcFuturesFiles/registermvc.wsf
  221. +20 −0 mvc3/src/MvcFuturesFiles/unregistermvc.wsf
  222. +18 −0 mvc3/src/SystemWebMvc/GlobalSuppressions.cs
  223. +58 −0 mvc3/src/SystemWebMvc/Mvc/AcceptVerbsAttribute.cs
  224. +175 −0 mvc3/src/SystemWebMvc/Mvc/ActionDescriptor.cs
  225. +55 −0 mvc3/src/SystemWebMvc/Mvc/ActionExecutedContext.cs
  226. +43 −0 mvc3/src/SystemWebMvc/Mvc/ActionExecutingContext.cs
  227. +22 −0 mvc3/src/SystemWebMvc/Mvc/ActionFilterAttribute.cs
  228. +74 −0 mvc3/src/SystemWebMvc/Mvc/ActionMethodDispatcher.cs
  229. +15 −0 mvc3/src/SystemWebMvc/Mvc/ActionMethodDispatcherCache.cs
  230. +113 −0 mvc3/src/SystemWebMvc/Mvc/ActionMethodSelector.cs
  231. +9 −0 mvc3/src/SystemWebMvc/Mvc/ActionMethodSelectorAttribute.cs
  232. +27 −0 mvc3/src/SystemWebMvc/Mvc/ActionNameAttribute.cs
  233. +9 −0 mvc3/src/SystemWebMvc/Mvc/ActionNameSelectorAttribute.cs
  234. +9 −0 mvc3/src/SystemWebMvc/Mvc/ActionResult.cs
  235. +5 −0 mvc3/src/SystemWebMvc/Mvc/ActionSelector.cs
  236. +41 −0 mvc3/src/SystemWebMvc/Mvc/AdditionalMetaDataAttribute.cs
  237. +300 −0 mvc3/src/SystemWebMvc/Mvc/Ajax/AjaxExtensions.cs
  238. +226 −0 mvc3/src/SystemWebMvc/Mvc/Ajax/AjaxOptions.cs
  239. +7 −0 mvc3/src/SystemWebMvc/Mvc/Ajax/InsertionMode.cs
  240. +76 −0 mvc3/src/SystemWebMvc/Mvc/AjaxHelper.cs
  241. +23 −0 mvc3/src/SystemWebMvc/Mvc/AjaxHelper`1.cs
  242. +14 −0 mvc3/src/SystemWebMvc/Mvc/AjaxRequestExtensions.cs
  243. +19 −0 mvc3/src/SystemWebMvc/Mvc/AllowHtmlAttribute.cs
  244. +31 −0 mvc3/src/SystemWebMvc/Mvc/AreaHelpers.cs
  245. +50 −0 mvc3/src/SystemWebMvc/Mvc/AreaRegistration.cs
  246. +93 −0 mvc3/src/SystemWebMvc/Mvc/AreaRegistrationContext.cs
  247. +93 −0 mvc3/src/SystemWebMvc/Mvc/AssociatedMetadataProvider.cs
  248. +51 −0 mvc3/src/SystemWebMvc/Mvc/AssociatedValidatorProvider.cs
  249. +6 −0 mvc3/src/SystemWebMvc/Mvc/Async/ActionDescriptorCreator.cs
  250. +28 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncActionDescriptor.cs
  251. +194 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncActionMethodSelector.cs
  252. +270 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncControllerActionInvoker.cs
  253. +67 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncManager.cs
  254. +256 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncResultWrapper.cs
  255. +63 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncUtil.cs
  256. +7 −0 mvc3/src/SystemWebMvc/Mvc/Async/AsyncVoid.cs
  257. +5 −0 mvc3/src/SystemWebMvc/Mvc/Async/BeginInvokeDelegate.cs
  258. +5 −0 mvc3/src/SystemWebMvc/Mvc/Async/EndInvokeDelegate.cs
  259. +5 −0 mvc3/src/SystemWebMvc/Mvc/Async/EndInvokeDelegate`1.cs
  260. +8 −0 mvc3/src/SystemWebMvc/Mvc/Async/IAsyncActionInvoker.cs
  261. +8 −0 mvc3/src/SystemWebMvc/Mvc/Async/IAsyncController.cs
  262. +10 −0 mvc3/src/SystemWebMvc/Mvc/Async/IAsyncManagerContainer.cs
  263. +50 −0 mvc3/src/SystemWebMvc/Mvc/Async/OperationCounter.cs
  264. +185 −0 mvc3/src/SystemWebMvc/Mvc/Async/ReflectedAsyncActionDescriptor.cs
  265. +69 −0 mvc3/src/SystemWebMvc/Mvc/Async/ReflectedAsyncControllerDescriptor.cs
  266. +55 −0 mvc3/src/SystemWebMvc/Mvc/Async/SimpleAsyncResult.cs
  267. +20 −0 mvc3/src/SystemWebMvc/Mvc/Async/SingleEntryGate.cs
  268. +47 −0 mvc3/src/SystemWebMvc/Mvc/Async/SynchronizationContextUtil.cs
  269. +27 −0 mvc3/src/SystemWebMvc/Mvc/Async/SynchronousOperationException.cs
  270. +21 −0 mvc3/src/SystemWebMvc/Mvc/Async/Trigger.cs
  271. +56 −0 mvc3/src/SystemWebMvc/Mvc/Async/TriggerListener.cs
  272. +99 −0 mvc3/src/SystemWebMvc/Mvc/AsyncController.cs
  273. +40 −0 mvc3/src/SystemWebMvc/Mvc/AsyncTimeoutAttribute.cs
  274. +37 −0 mvc3/src/SystemWebMvc/Mvc/AuthorizationContext.cs
  275. +131 −0 mvc3/src/SystemWebMvc/Mvc/AuthorizeAttribute.cs
  276. +51 −0 mvc3/src/SystemWebMvc/Mvc/BindAttribute.cs
  277. +78 −0 mvc3/src/SystemWebMvc/Mvc/BuildManagerCompiledView.cs
  278. +76 −0 mvc3/src/SystemWebMvc/Mvc/BuildManagerViewEngine.cs
  279. +27 −0 mvc3/src/SystemWebMvc/Mvc/BuildManagerWrapper.cs
  280. +31 −0 mvc3/src/SystemWebMvc/Mvc/ByteArrayModelBinder.cs
  281. +18 −0 mvc3/src/SystemWebMvc/Mvc/ChildActionOnlyAttribute.cs
  282. +35 −0 mvc3/src/SystemWebMvc/Mvc/ChildActionValueProvider.cs
  283. +14 −0 mvc3/src/SystemWebMvc/Mvc/ChildActionValueProviderFactory.cs
  284. +67 −0 mvc3/src/SystemWebMvc/Mvc/ClientDataTypeModelValidatorProvider.cs
  285. +52 −0 mvc3/src/SystemWebMvc/Mvc/CompareAttribute.cs
  286. +41 −0 mvc3/src/SystemWebMvc/Mvc/ContentResult.cs
  287. +645 −0 mvc3/src/SystemWebMvc/Mvc/Controller.cs
  288. +313 −0 mvc3/src/SystemWebMvc/Mvc/ControllerActionInvoker.cs
  289. +120 −0 mvc3/src/SystemWebMvc/Mvc/ControllerBase.cs
  290. +81 −0 mvc3/src/SystemWebMvc/Mvc/ControllerBuilder.cs
  291. +120 −0 mvc3/src/SystemWebMvc/Mvc/ControllerContext.cs
  292. +71 −0 mvc3/src/SystemWebMvc/Mvc/ControllerDescriptor.cs
  293. +14 −0 mvc3/src/SystemWebMvc/Mvc/ControllerDescriptorCache.cs
  294. +12 −0 mvc3/src/SystemWebMvc/Mvc/ControllerInstanceFilterProvider.cs
  295. +115 −0 mvc3/src/SystemWebMvc/Mvc/ControllerTypeCache.cs
  296. +14 −0 mvc3/src/SystemWebMvc/Mvc/CustomModelBinderAttribute.cs
  297. +51 −0 mvc3/src/SystemWebMvc/Mvc/DataAnnotationsModelMetadata.cs
  298. +98 −0 mvc3/src/SystemWebMvc/Mvc/DataAnnotationsModelMetadataProvider.cs
  299. +61 −0 mvc3/src/SystemWebMvc/Mvc/DataAnnotationsModelValidator.cs
  300. +342 −0 mvc3/src/SystemWebMvc/Mvc/DataAnnotationsModelValidatorProvider.cs
Sorry, we could not display the entire diff because too many files (1,528) changed.
361 WebRuntime.sln
@@ -0,0 +1,361 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MVC", "MVC", "{B63BFF82-9FAB-40D2-B061-BF8046410540}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebPages", "WebPages", "{A10F6194-933A-443E-AEC3-023942D30D99}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Razor", "webpages\src\System.Web.Razor\System.Web.Razor.csproj", "{8F18041B-9410-4C36-A9C5-067813DF5F31}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages", "webpages\src\System.Web.WebPages\System.Web.WebPages.csproj", "{76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Razor", "webpages\src\System.Web.WebPages.Razor\System.Web.WebPages.Razor.csproj", "{0939B11A-FE4E-4BA1-8AD6-D97741EE314F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data", "webpages\src\WebMatrix.Data\WebMatrix.Data.csproj", "{4D39BAAF-8A96-473E-AB79-C8A341885137}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.WebData", "webpages\src\WebMatrix.WebData\WebMatrix.WebData.csproj", "{55A15F40-1435-4248-A7F2-2A146BB83586}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Helpers", "webpages\src\System.Web.Helpers\System.Web.Helpers.csproj", "{9B7E3740-6161-4548-833C-4BBCA43B970E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Deployment", "webpages\src\System.Web.WebPages.Deployment\System.Web.WebPages.Deployment.csproj", "{22BABB60-8F02-4027-AFFC-ACF069954536}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Web.Helpers", "webpages\src\Microsoft.Web.Helpers\Microsoft.Web.Helpers.csproj", "{0C7CE809-0F72-4C19-8C64-D6573E4D9521}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Web.Helpers.Test", "webpages\test\Microsoft.Web.Helpers.Test\Microsoft.Web.Helpers.Test.csproj", "{2C653A66-8159-4A41-954F-A67915DFDA87}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Helpers.Test", "webpages\test\System.Web.Helpers.Test\System.Web.Helpers.Test.csproj", "{D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Razor.Test", "webpages\test\System.Web.Razor.Test\System.Web.Razor.Test.csproj", "{0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Deployment.Test", "webpages\test\System.Web.WebPages.Deployment.Test\System.Web.WebPages.Deployment.Test.csproj", "{268DEE9D-F323-4A00-8ED8-3784388C3E3A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Razor.Test", "webpages\test\System.Web.WebPages.Razor.Test\System.Web.WebPages.Razor.Test.csproj", "{66A74F3C-A106-4C1E-BAA0-001908FEA2CA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Test", "webpages\test\System.Web.WebPages.Test\System.Web.WebPages.Test.csproj", "{0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.TestUtils", "webpages\test\System.Web.WebPages.TestUtils\System.Web.WebPages.TestUtils.csproj", "{4599D053-CC06-4818-AFFD-EF45404895EF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data.Test", "webpages\test\WebMatrix.Data.Test\WebMatrix.Data.Test.csproj", "{E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc", "mvc3\src\SystemWebMvc\System.Web.Mvc.csproj", "{3D3FFD8A-624D-4E9B-954B-E1C105507975}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcBuildTasks", "mvc3\src\MvcBuildTasks\MvcBuildTasks.csproj", "{A23646B5-9365-4007-85D3-F7D9A04EE916}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcFuturesFiles", "mvc3\src\MvcFuturesFiles\MvcFuturesFiles.csproj", "{075BA018-DD6D-4077-96CA-D8640D888009}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcFutures", "mvc3\src\MvcFutures\MvcFutures.csproj", "{D3CF7430-6DA4-42B0-BD90-CA39D16687B2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MicrosoftMvcAjaxScript", "mvc3\src\MicrosoftMvcAjaxScript\MicrosoftMvcAjaxScript.csproj", "{256C18D8-0A46-4DEC-A9D6-D8073D15F453}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MicrosoftMvcValidationScript", "mvc3\src\MicrosoftMvcValidationScript\MicrosoftMvcValidationScript.csproj", "{83CAA00D-A07D-45FD-8CE3-3298CFF374CD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc.Test", "mvc3\test\SystemWebMvcTest\System.Web.Mvc.Test.csproj", "{8AC2A2E4-2F11-4D40-A887-62E2583A65E6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcBuildTasksTest", "mvc3\test\MvcBuildTasksTest\MvcBuildTasksTest.csproj", "{44D03EF0-08CE-4ADE-A7E0-445090023FA7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcFuturesTest", "mvc3\test\MvcFuturesTest\MvcFuturesTest.csproj", "{6C28DA70-60F1-4442-967F-591BF3962EC5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestUtil", "mvc3\test\UnitTestUtil\UnitTestUtil.csproj", "{57FFC134-7F9D-4B97-8692-8D2C16714663}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ CodeCoverage|Any CPU = CodeCoverage|Any CPU
+ Coverage|Any CPU = Coverage|Any CPU
+ Debug|Any CPU = Debug|Any CPU
+ FxCop|Any CPU = FxCop|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8F18041B-9410-4C36-A9C5-067813DF5F31}.Release|Any CPU.Build.0 = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4D39BAAF-8A96-473E-AB79-C8A341885137}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55A15F40-1435-4248-A7F2-2A146BB83586}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9B7E3740-6161-4548-833C-4BBCA43B970E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {22BABB60-8F02-4027-AFFC-ACF069954536}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2C653A66-8159-4A41-954F-A67915DFDA87}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4599D053-CC06-4818-AFFD-EF45404895EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.CodeCoverage|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.CodeCoverage|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.Coverage|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.Coverage|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.FxCop|Any CPU.ActiveCfg = FxCop|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.FxCop|Any CPU.Build.0 = FxCop|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.CodeCoverage|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.CodeCoverage|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.Coverage|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.Coverage|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.FxCop|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.FxCop|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A23646B5-9365-4007-85D3-F7D9A04EE916}.Release|Any CPU.Build.0 = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {075BA018-DD6D-4077-96CA-D8640D888009}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.CodeCoverage|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.CodeCoverage|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.Coverage|Any CPU.ActiveCfg = CodeCoverage|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.Coverage|Any CPU.Build.0 = CodeCoverage|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.FxCop|Any CPU.ActiveCfg = FxCop|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.FxCop|Any CPU.Build.0 = FxCop|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453}.Release|Any CPU.Build.0 = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6C28DA70-60F1-4442-967F-591BF3962EC5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.Coverage|Any CPU.Build.0 = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.FxCop|Any CPU.Build.0 = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {57FFC134-7F9D-4B97-8692-8D2C16714663}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {3D3FFD8A-624D-4E9B-954B-E1C105507975} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {A23646B5-9365-4007-85D3-F7D9A04EE916} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {075BA018-DD6D-4077-96CA-D8640D888009} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {D3CF7430-6DA4-42B0-BD90-CA39D16687B2} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {256C18D8-0A46-4DEC-A9D6-D8073D15F453} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {83CAA00D-A07D-45FD-8CE3-3298CFF374CD} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {8AC2A2E4-2F11-4D40-A887-62E2583A65E6} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {44D03EF0-08CE-4ADE-A7E0-445090023FA7} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {6C28DA70-60F1-4442-967F-591BF3962EC5} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {57FFC134-7F9D-4B97-8692-8D2C16714663} = {B63BFF82-9FAB-40D2-B061-BF8046410540}
+ {8F18041B-9410-4C36-A9C5-067813DF5F31} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {76EFA9C5-8D7E-4FDF-B710-E20F8B6B00D2} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {0939B11A-FE4E-4BA1-8AD6-D97741EE314F} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {4D39BAAF-8A96-473E-AB79-C8A341885137} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {55A15F40-1435-4248-A7F2-2A146BB83586} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {9B7E3740-6161-4548-833C-4BBCA43B970E} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {22BABB60-8F02-4027-AFFC-ACF069954536} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {0C7CE809-0F72-4C19-8C64-D6573E4D9521} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {2C653A66-8159-4A41-954F-A67915DFDA87} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {D3313BDF-8071-4AC8-9D98-ABF7F9E88A57} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {0BB62A1D-E6B5-49FA-9E3C-6AF679A66DFE} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {268DEE9D-F323-4A00-8ED8-3784388C3E3A} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {66A74F3C-A106-4C1E-BAA0-001908FEA2CA} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {0F4870DB-A799-4DBA-99DF-0D74BB52FEC2} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {4599D053-CC06-4818-AFFD-EF45404895EF} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ {E2D008A9-4D1D-4F6B-8325-4ED717D6EA0A} = {A10F6194-933A-443E-AEC3-023942D30D99}
+ EndGlobalSection
+EndGlobal
36 mvc3/src/CustomDictionary.xml
@@ -0,0 +1,36 @@
+<Dictionary>
+ <Words>
+ <Deprecated>
+ <!-- Words that should be flagged as obsolete. -->
+ </Deprecated>
+ <Recognized>
+ <!-- Words that should not cause a violation. -->
+
+ <!-- Model View Controller -->
+ <Word>MVC</Word>
+
+ <!-- Javascript Object Notation -->
+ <Word>JSON</Word>
+
+ <!-- A service that provides validation -->
+ <Word>Validator</Word>
+ <Word>Validators</Word>
+
+ <!-- Something which is capable of being validated -->
+ <Word>Validatable</Word>
+
+ <!-- Something which skips request validation, e.g. the Request.Unvalidated collections -->
+ <Word>Unvalidated</Word>
+ </Recognized>
+ <Unrecognized>
+ <!-- Words that should cause a violation. -->
+ </Unrecognized>
+ </Words>
+ <Acronyms>
+ <CasingExceptions>
+ <!-- Exceptions to the acronym casing rules. Add a justification comment for each new string. -->
+
+ <!--<Acronym>SSL</Acronym>-->
+ </CasingExceptions>
+ </Acronyms>
+</Dictionary>
236 mvc3/src/FxCopRules.ruleset
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RuleSet Name="FxCop rules for ASP.NET MVC" Description="This rule set contains the rules for ASP.NET MVC. " ToolsVersion="10.0">
+ <IncludeAll Action="Warning" />
+ <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
+ <Rule Id="CA1000" Action="Error" />
+ <Rule Id="CA1001" Action="Error" />
+ <Rule Id="CA1002" Action="Error" />
+ <Rule Id="CA1003" Action="Error" />
+ <Rule Id="CA1004" Action="Error" />
+ <Rule Id="CA1005" Action="Error" />
+ <Rule Id="CA1006" Action="Error" />
+ <Rule Id="CA1007" Action="Error" />
+ <Rule Id="CA1008" Action="Error" />
+ <Rule Id="CA1009" Action="Error" />
+ <Rule Id="CA1010" Action="Error" />
+ <Rule Id="CA1011" Action="Error" />
+ <Rule Id="CA1012" Action="Error" />
+ <Rule Id="CA1013" Action="Error" />
+ <Rule Id="CA1014" Action="Error" />
+ <Rule Id="CA1016" Action="Error" />
+ <Rule Id="CA1017" Action="Error" />
+ <Rule Id="CA1018" Action="Error" />
+ <Rule Id="CA1019" Action="Error" />
+ <Rule Id="CA1020" Action="Error" />
+ <Rule Id="CA1021" Action="Error" />
+ <Rule Id="CA1023" Action="Error" />
+ <Rule Id="CA1024" Action="Error" />
+ <Rule Id="CA1025" Action="Error" />
+ <Rule Id="CA1026" Action="Error" />
+ <Rule Id="CA1027" Action="Error" />
+ <Rule Id="CA1028" Action="Error" />
+ <Rule Id="CA1030" Action="Error" />
+ <Rule Id="CA1031" Action="Error" />
+ <Rule Id="CA1032" Action="Error" />
+ <Rule Id="CA1033" Action="Error" />
+ <Rule Id="CA1034" Action="Error" />
+ <Rule Id="CA1035" Action="Error" />
+ <Rule Id="CA1036" Action="Error" />
+ <Rule Id="CA1038" Action="Error" />
+ <Rule Id="CA1039" Action="Error" />
+ <Rule Id="CA1040" Action="Error" />
+ <Rule Id="CA1041" Action="Error" />
+ <Rule Id="CA1043" Action="Error" />
+ <Rule Id="CA1044" Action="Error" />
+ <Rule Id="CA1045" Action="Error" />
+ <Rule Id="CA1046" Action="Error" />
+ <Rule Id="CA1047" Action="Error" />
+ <Rule Id="CA1048" Action="Error" />
+ <Rule Id="CA1049" Action="Error" />
+ <Rule Id="CA1050" Action="Error" />
+ <Rule Id="CA1051" Action="Error" />
+ <Rule Id="CA1052" Action="Error" />
+ <Rule Id="CA1053" Action="Error" />
+ <Rule Id="CA1054" Action="Error" />
+ <Rule Id="CA1055" Action="Error" />
+ <Rule Id="CA1056" Action="Error" />
+ <Rule Id="CA1057" Action="Error" />
+ <Rule Id="CA1058" Action="Error" />
+ <Rule Id="CA1059" Action="Error" />
+ <Rule Id="CA1060" Action="Error" />
+ <Rule Id="CA1061" Action="Error" />
+ <Rule Id="CA1062" Action="None" />
+ <Rule Id="CA1063" Action="Error" />
+ <Rule Id="CA1064" Action="Error" />
+ <Rule Id="CA1065" Action="Error" />
+ <Rule Id="CA1300" Action="Error" />
+ <Rule Id="CA1301" Action="Error" />
+ <Rule Id="CA1302" Action="Error" />
+ <Rule Id="CA1303" Action="Error" />
+ <Rule Id="CA1304" Action="Error" />
+ <Rule Id="CA1305" Action="Error" />
+ <Rule Id="CA1306" Action="Error" />
+ <Rule Id="CA1307" Action="Error" />
+ <Rule Id="CA1308" Action="Error" />
+ <Rule Id="CA1309" Action="Error" />
+ <Rule Id="CA1400" Action="Error" />
+ <Rule Id="CA1401" Action="Error" />
+ <Rule Id="CA1402" Action="Error" />
+ <Rule Id="CA1403" Action="Error" />
+ <Rule Id="CA1404" Action="Error" />
+ <Rule Id="CA1405" Action="Error" />
+ <Rule Id="CA1406" Action="Error" />
+ <Rule Id="CA1407" Action="Error" />
+ <Rule Id="CA1408" Action="Error" />
+ <Rule Id="CA1409" Action="Error" />
+ <Rule Id="CA1410" Action="Error" />
+ <Rule Id="CA1411" Action="Error" />
+ <Rule Id="CA1412" Action="Error" />
+ <Rule Id="CA1413" Action="Error" />
+ <Rule Id="CA1414" Action="Error" />
+ <Rule Id="CA1415" Action="Error" />
+ <Rule Id="CA1500" Action="Error" />
+ <Rule Id="CA1501" Action="Error" />
+ <Rule Id="CA1502" Action="Error" />
+ <Rule Id="CA1504" Action="Error" />
+ <Rule Id="CA1505" Action="Error" />
+ <Rule Id="CA1506" Action="Error" />
+ <Rule Id="CA1600" Action="Error" />
+ <Rule Id="CA1601" Action="Error" />
+ <Rule Id="CA1700" Action="Error" />
+ <Rule Id="CA1701" Action="Error" />
+ <Rule Id="CA1702" Action="Error" />
+ <Rule Id="CA1703" Action="Error" />
+ <Rule Id="CA1704" Action="Error" />
+ <Rule Id="CA1707" Action="Error" />
+ <Rule Id="CA1708" Action="Error" />
+ <Rule Id="CA1709" Action="Error" />
+ <Rule Id="CA1710" Action="Error" />
+ <Rule Id="CA1711" Action="Error" />
+ <Rule Id="CA1712" Action="Error" />
+ <Rule Id="CA1713" Action="Error" />
+ <Rule Id="CA1714" Action="Error" />
+ <Rule Id="CA1715" Action="Error" />
+ <Rule Id="CA1716" Action="Error" />
+ <Rule Id="CA1717" Action="Error" />
+ <Rule Id="CA1719" Action="Error" />
+ <Rule Id="CA1720" Action="Error" />
+ <Rule Id="CA1721" Action="Error" />
+ <Rule Id="CA1722" Action="Error" />
+ <Rule Id="CA1724" Action="Error" />
+ <Rule Id="CA1725" Action="Error" />
+ <Rule Id="CA1726" Action="Error" />
+ <Rule Id="CA1800" Action="Error" />
+ <Rule Id="CA1801" Action="Error" />
+ <Rule Id="CA1802" Action="Error" />
+ <Rule Id="CA1804" Action="Error" />
+ <Rule Id="CA1806" Action="Error" />
+ <Rule Id="CA1809" Action="Error" />
+ <Rule Id="CA1810" Action="Error" />
+ <Rule Id="CA1811" Action="Error" />
+ <Rule Id="CA1812" Action="Error" />
+ <Rule Id="CA1813" Action="Error" />
+ <Rule Id="CA1814" Action="Error" />
+ <Rule Id="CA1815" Action="Error" />
+ <Rule Id="CA1816" Action="Error" />
+ <Rule Id="CA1819" Action="Error" />
+ <Rule Id="CA1820" Action="Error" />
+ <Rule Id="CA1821" Action="Error" />
+ <Rule Id="CA1822" Action="Error" />
+ <Rule Id="CA1823" Action="Error" />
+ <Rule Id="CA1824" Action="Error" />
+ <Rule Id="CA1900" Action="Error" />
+ <Rule Id="CA1901" Action="Error" />
+ <Rule Id="CA1903" Action="Error" />
+ <Rule Id="CA2000" Action="Error" />
+ <Rule Id="CA2001" Action="Error" />
+ <Rule Id="CA2002" Action="Error" />
+ <Rule Id="CA2003" Action="Error" />
+ <Rule Id="CA2004" Action="Error" />
+ <Rule Id="CA2006" Action="Error" />
+ <Rule Id="CA2100" Action="Error" />
+ <Rule Id="CA2101" Action="Error" />
+ <Rule Id="CA2102" Action="Error" />
+ <Rule Id="CA2103" Action="Error" />
+ <Rule Id="CA2104" Action="Error" />
+ <Rule Id="CA2105" Action="Error" />
+ <Rule Id="CA2106" Action="Error" />
+ <Rule Id="CA2107" Action="Error" />
+ <Rule Id="CA2108" Action="Error" />
+ <Rule Id="CA2109" Action="Error" />
+ <Rule Id="CA2111" Action="Error" />
+ <Rule Id="CA2112" Action="Error" />
+ <Rule Id="CA2114" Action="Error" />
+ <Rule Id="CA2115" Action="Error" />
+ <Rule Id="CA2116" Action="Error" />
+ <Rule Id="CA2117" Action="Error" />
+ <Rule Id="CA2118" Action="Error" />
+ <Rule Id="CA2119" Action="Error" />
+ <Rule Id="CA2120" Action="Error" />
+ <Rule Id="CA2121" Action="Error" />
+ <Rule Id="CA2122" Action="Error" />
+ <Rule Id="CA2123" Action="Error" />
+ <Rule Id="CA2124" Action="Error" />
+ <Rule Id="CA2126" Action="Error" />
+ <Rule Id="CA2130" Action="Error" />
+ <Rule Id="CA2131" Action="Error" />
+ <Rule Id="CA2132" Action="Error" />
+ <Rule Id="CA2133" Action="Error" />
+ <Rule Id="CA2134" Action="Error" />
+ <Rule Id="CA2135" Action="Error" />
+ <Rule Id="CA2136" Action="Error" />
+ <Rule Id="CA2137" Action="Error" />
+ <Rule Id="CA2138" Action="Error" />
+ <Rule Id="CA2139" Action="Error" />
+ <Rule Id="CA2140" Action="Error" />
+ <Rule Id="CA2141" Action="Error" />
+ <Rule Id="CA2142" Action="Error" />
+ <Rule Id="CA2143" Action="Error" />
+ <Rule Id="CA2144" Action="Error" />
+ <Rule Id="CA2145" Action="Error" />
+ <Rule Id="CA2146" Action="Error" />
+ <Rule Id="CA2147" Action="Error" />
+ <Rule Id="CA2149" Action="Error" />
+ <Rule Id="CA2200" Action="Error" />
+ <Rule Id="CA2201" Action="Error" />
+ <Rule Id="CA2202" Action="Error" />
+ <Rule Id="CA2204" Action="Error" />
+ <Rule Id="CA2205" Action="Error" />
+ <Rule Id="CA2207" Action="Error" />
+ <Rule Id="CA2208" Action="Error" />
+ <Rule Id="CA2210" Action="Error" />
+ <Rule Id="CA2211" Action="Error" />
+ <Rule Id="CA2212" Action="Error" />
+ <Rule Id="CA2213" Action="Error" />
+ <Rule Id="CA2214" Action="Error" />
+ <Rule Id="CA2215" Action="Error" />
+ <Rule Id="CA2216" Action="Error" />
+ <Rule Id="CA2217" Action="Error" />
+ <Rule Id="CA2218" Action="Error" />
+ <Rule Id="CA2219" Action="Error" />
+ <Rule Id="CA2220" Action="Error" />
+ <Rule Id="CA2221" Action="Error" />
+ <Rule Id="CA2222" Action="Error" />
+ <Rule Id="CA2223" Action="Error" />
+ <Rule Id="CA2224" Action="Error" />
+ <Rule Id="CA2225" Action="Error" />
+ <Rule Id="CA2226" Action="Error" />
+ <Rule Id="CA2227" Action="Error" />
+ <Rule Id="CA2228" Action="Error" />
+ <Rule Id="CA2229" Action="Error" />
+ <Rule Id="CA2230" Action="Error" />
+ <Rule Id="CA2231" Action="Error" />
+ <Rule Id="CA2232" Action="Error" />
+ <Rule Id="CA2233" Action="Error" />
+ <Rule Id="CA2234" Action="Error" />
+ <Rule Id="CA2235" Action="Error" />
+ <Rule Id="CA2236" Action="Error" />
+ <Rule Id="CA2237" Action="Error" />
+ <Rule Id="CA2238" Action="Error" />
+ <Rule Id="CA2239" Action="Error" />
+ <Rule Id="CA2240" Action="Error" />
+ <Rule Id="CA2241" Action="Error" />
+ <Rule Id="CA2242" Action="Error" />
+ <Rule Id="CA2243" Action="Error" />
+ </Rules>
+</RuleSet>
12 mvc3/src/GlobalAssemblyInfo.cs
@@ -0,0 +1,12 @@
+using System.Reflection;
+using System.Resources;
+
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft Corporation")]
+[assembly: AssemblyProduct("Microsoft® .NET Framework")]
+[assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: AssemblyVersion("3.0.0.0")]
+[assembly: AssemblyFileVersion("3.0.20107.0")]
+[assembly: NeutralResourcesLanguage("en-US")]
70 mvc3/src/MicrosoftMvcAjaxScript/AjaxContext.cs
@@ -0,0 +1,70 @@
+namespace Sys.Mvc {
+ using System.DHTML;
+ using Sys.Net;
+
+ public class AjaxContext {
+ private InsertionMode _insertionMode;
+ private DOMElement _loadingElement;
+ private WebRequestExecutor _response;
+ private WebRequest _request;
+ private DOMElement _updateTarget;
+
+ public AjaxContext(WebRequest request, DOMElement updateTarget, DOMElement loadingElement, InsertionMode insertionMode) {
+ _request = request;
+ _updateTarget = updateTarget;
+ _loadingElement = loadingElement;
+ _insertionMode = insertionMode;
+ }
+
+ public string Data {
+ get {
+ if (_response != null) {
+ return _response.ResponseData;
+ }
+ else {
+ return null;
+ }
+ }
+ }
+
+ public InsertionMode InsertionMode {
+ get {
+ return _insertionMode;
+ }
+ }
+
+ public DOMElement LoadingElement {
+ get {
+ return _loadingElement;
+ }
+ }
+
+ public object Object {
+ get {
+ WebRequestExecutor executor = Response;
+ return (executor != null) ? executor.Object : null;
+ }
+ }
+
+ public WebRequestExecutor Response {
+ get {
+ return _response;
+ }
+ set {
+ _response = value;
+ }
+ }
+
+ public WebRequest Request {
+ get {
+ return _request;
+ }
+ }
+
+ public DOMElement UpdateTarget {
+ get {
+ return _updateTarget;
+ }
+ }
+ }
+}
3  mvc3/src/MicrosoftMvcAjaxScript/AjaxEventHandler.cs
@@ -0,0 +1,3 @@
+namespace Sys.Mvc {
+ public delegate void AjaxEventHandler(AjaxContext context);
+}
19 mvc3/src/MicrosoftMvcAjaxScript/AjaxOptions.cs
@@ -0,0 +1,19 @@
+namespace Sys.Mvc {
+ using System;
+ using Sys.Net;
+ using System.DHTML;
+
+ [Record]
+ public sealed class AjaxOptions {
+ public string Confirm;
+ public string HttpMethod;
+ public InsertionMode InsertionMode;
+ public string LoadingElementId;
+ public CancellableAjaxEventHandler OnBegin;
+ public CancellableAjaxEventHandler OnComplete;
+ public AjaxEventHandler OnFailure;
+ public AjaxEventHandler OnSuccess;
+ public string UpdateTargetId;
+ public string Url;
+ }
+}
39 mvc3/src/MicrosoftMvcAjaxScript/AsyncForm.cs
@@ -0,0 +1,39 @@
+namespace Sys.Mvc {
+ using System;
+ using System.DHTML;
+ using Sys.UI;
+
+ public static class AsyncForm {
+
+ public static void HandleClick(FormElement form, DomEvent evt) {
+ string additionalInput = MvcHelpers.SerializeSubmitButton(evt.Target, evt.OffsetX, evt.OffsetY);
+ Type.SetField(form, "_additionalInput", additionalInput);
+ }
+
+ public static void HandleSubmit(FormElement form, DomEvent evt, AjaxOptions ajaxOptions) {
+ evt.PreventDefault();
+
+ // run validation
+ ArrayList validationCallbacks = (ArrayList)Type.GetField(form, "validationCallbacks");
+ if (validationCallbacks != null) {
+ for (int i = 0; i < validationCallbacks.Length; i++) {
+ ValidationCallback callback = (ValidationCallback)validationCallbacks[i];
+ if (!callback()) {
+ return; // bail out since validation failed
+ }
+ }
+ }
+
+ string body = MvcHelpers.SerializeForm(form);
+ MvcHelpers.AsyncRequest(form.Action,
+ form.Method ?? "post",
+ body,
+ form,
+ ajaxOptions);
+
+ }
+
+ }
+
+ internal delegate bool ValidationCallback();
+}
17 mvc3/src/MicrosoftMvcAjaxScript/AsyncHyperlink.cs
@@ -0,0 +1,17 @@
+namespace Sys.Mvc {
+ using System;
+ using System.DHTML;
+ using Sys.Net;
+ using Sys.UI;
+
+ public static class AsyncHyperlink {
+ public static void HandleClick(AnchorElement anchor, DomEvent evt, AjaxOptions ajaxOptions) {
+ evt.PreventDefault();
+ MvcHelpers.AsyncRequest(anchor.Href,
+ "post",
+ "",
+ anchor,
+ ajaxOptions);
+ }
+ }
+}
3  mvc3/src/MicrosoftMvcAjaxScript/CancellableAjaxEventHandler.cs
@@ -0,0 +1,3 @@
+namespace Sys.Mvc {
+ public delegate bool CancellableAjaxEventHandler(AjaxContext context);
+}
7 mvc3/src/MicrosoftMvcAjaxScript/InsertionMode.cs
@@ -0,0 +1,7 @@
+namespace Sys.Mvc {
+ public enum InsertionMode {
+ Replace = 0,
+ InsertBefore = 1,
+ InsertAfter = 2
+ }
+}
64 mvc3/src/MicrosoftMvcAjaxScript/MicrosoftMvcAjaxScript.csproj
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{256C18D8-0A46-4DEC-A9D6-D8073D15F453}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>
+ </RootNamespace>
+ <AssemblyName>MicrosoftMvcAjax</AssemblyName>
+ <NoStdLib>True</NoStdLib>
+ <CopyReferences>True</CopyReferences>
+ <TemplateFile>Properties\Script.jst</TemplateFile>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <NoWarn>0028, 1591</NoWarn>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <UpgradeBackupLocation />
+ <SccProjectName>
+ </SccProjectName>
+ <SccLocalPath>
+ </SccLocalPath>
+ <SccAuxPath>
+ </SccAuxPath>
+ <SccProvider>
+ </SccProvider>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <OutputPath>..\..\bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <DocumentationFile>
+ </DocumentationFile>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <OutputPath>..\..\bin\Release\</OutputPath>
+ <DefineConstants>
+ </DefineConstants>
+ <DocumentationFile>bin\Release\MvcAjaxScript.xml</DocumentationFile>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="..\..\tools\ScriptSharp\Atlas\aacorlib.dll" />
+ <Reference Include="..\..\tools\ScriptSharp\Atlas\MicrosoftAjax.dll" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Properties\Script.jst" />
+ <Compile Include="AjaxContext.cs" />
+ <Compile Include="AjaxEventHandler.cs" />
+ <Compile Include="AjaxOptions.cs" />
+ <Compile Include="AsyncHyperlink.cs" />
+ <Compile Include="CancellableAjaxEventHandler.cs" />
+ <Compile Include="InsertionMode.cs" />
+ <Compile Include="MvcHelpers.cs" />
+ <Compile Include="AsyncForm.cs" />
+ </ItemGroup>
+ <Import Project="..\..\tools\ScriptSharp\nStuff.ScriptSharp.targets" />
+</Project>
273 mvc3/src/MicrosoftMvcAjaxScript/MvcHelpers.cs
@@ -0,0 +1,273 @@
+namespace Sys.Mvc {
+ using System;
+ using System.DHTML;
+ using Sys.Net;
+
+ public static class MvcHelpers {
+
+ // MVC implementation of PageRequestManager.js / _onFormElementActive()
+ internal static string SerializeSubmitButton(DOMElement element, int offsetX, int offsetY) {
+ // element: the form element that is active
+ // offsetX/Y: if the element is an image button, the coordinates of the click
+
+ if (element.Disabled) {
+ return null;
+ }
+
+ string name = (string)Type.GetField(element, "name");
+ if (name != null) {
+ string tagName = element.TagName.ToUpperCase();
+ string encodedName = name.EncodeURIComponent();
+ InputElement inputElement = (InputElement)element;
+ if (tagName == "INPUT") {
+ string type = inputElement.Type;
+ if (type == "submit") {
+ return encodedName + "=" + inputElement.Value.EncodeURIComponent();
+ }
+ else if (type == "image") {
+ return encodedName + ".x=" + offsetX + "&" + encodedName + ".y=" + offsetY;
+ }
+ }
+ else if ((tagName == "BUTTON") && (name.Length != 0) && (inputElement.Type == "submit")) {
+ return encodedName + "=" + inputElement.Value.EncodeURIComponent();
+ }
+ }
+
+ return null;
+ }
+
+ internal static string SerializeForm(FormElement form) {
+ DOMElement[] formElements = form.Elements;
+ StringBuilder formBody = new StringBuilder();
+
+ int count = formElements.Length;
+ for (int i = 0; i < count; i++) {
+ DOMElement element = formElements[i];
+ string name = (string)Type.GetField(element, "name");
+ if (name == null || name.Length == 0) {
+ continue;
+ }
+
+ string tagName = element.TagName.ToUpperCase();
+
+ if (tagName == "INPUT") {
+ InputElement inputElement = (InputElement)element;
+ string type = inputElement.Type;
+ if ((type == "text") ||
+ (type == "password") ||
+ (type == "hidden") ||
+ (((type == "checkbox") || (type == "radio")) && (bool)Type.GetField(element, "checked"))) {
+
+ formBody.Append(name.EncodeURIComponent());
+ formBody.Append("=");
+ formBody.Append(inputElement.Value.EncodeURIComponent());
+ formBody.Append("&");
+ }
+ }
+ else if (tagName == "SELECT") {
+ SelectElement selectElement = (SelectElement)element;
+ int optionCount = selectElement.Options.Length;
+ for (int j = 0; j < optionCount; j++) {
+ OptionElement optionElement = (OptionElement)selectElement.Options[j];
+ if (optionElement.Selected) {
+ formBody.Append(name.EncodeURIComponent());
+ formBody.Append("=");
+ formBody.Append(optionElement.Value.EncodeURIComponent());
+ formBody.Append("&");
+ }
+ }
+ }
+ else if (tagName == "TEXTAREA") {
+ formBody.Append(name.EncodeURIComponent());
+ formBody.Append("=");
+ formBody.Append(((string)Type.GetField(element, "value")).EncodeURIComponent());
+ formBody.Append("&");
+ }
+ }
+
+ // additional input represents the submit button or image that was clicked
+ string additionalInput = (string)Type.GetField(form, "_additionalInput");
+ if (additionalInput != null) {
+ formBody.Append(additionalInput);
+ formBody.Append("&");
+ }
+
+ return formBody.ToString();
+ }
+
+ internal static void AsyncRequest(string url, string verb, string body, DOMElement triggerElement, AjaxOptions ajaxOptions) {
+ // Run the confirm popup, if specified
+ if (ajaxOptions.Confirm != null) {
+ if (!Script.Confirm(ajaxOptions.Confirm)) {
+ return;
+ }
+ }
+
+ // Override the url if specified in AjaxOptions
+ if (ajaxOptions.Url != null) {
+ url = ajaxOptions.Url;
+ }
+
+ // Override the verb if specified in AjaxOptions
+ if (ajaxOptions.HttpMethod != null) {
+ verb = ajaxOptions.HttpMethod;
+ }
+
+ // Add the special hidden fields to the body
+ if (body.Length > 0 && !body.EndsWith('&')) {
+ body += "&";
+ }
+ body += "X-Requested-With=XMLHttpRequest";
+
+ string upperCaseVerb = verb.ToUpperCase();
+ bool isGetOrPost = (upperCaseVerb == "GET" || upperCaseVerb == "POST");
+ if (!isGetOrPost) {
+ body += "&";
+ body += "X-HTTP-Method-Override=" + upperCaseVerb;
+ }
+
+ // Determine where to place the body
+ string requestBody = "";
+ if (upperCaseVerb == "GET" || upperCaseVerb == "DELETE") {
+ if (url.IndexOf('?') > -1) {
+ // Case 1: http://foo.bar/baz?abc=123
+ if (!url.EndsWith('&')) {
+ url += "&";
+ }
+ url += body;
+ }
+ else {
+ // Case 2: http://foo.bar/baz
+ url += "?";
+ url += body;
+ }
+ }
+ else {
+ requestBody = body;
+ }
+
+ // Create the request
+ WebRequest request = new WebRequest();
+
+ request.Url = url;
+ // Some browsers only support XMLHttpRequest with GET and POST. Just to be
+ // safe we restrict out requests to use only those two methods and use a
+ // header as well as a form post field to override the verb. On the server side
+ // the header and form post field are supported using the AcceptVerbs attribute.
+ if (isGetOrPost) {
+ request.HttpVerb = verb;
+ }
+ else {
+ request.HttpVerb = "POST";
+ request.Headers["X-HTTP-Method-Override"] = upperCaseVerb;
+ }
+ request.Body = requestBody;
+ if (verb.ToUpperCase() == "PUT") {
+ request.Headers["Content-Type"] = "application/x-www-form-urlencoded;";
+ }
+ request.Headers["X-Requested-With"] = "XMLHttpRequest";
+
+ DOMElement updateElement = null;
+ if (ajaxOptions.UpdateTargetId != null) {
+ updateElement = Document.GetElementById(ajaxOptions.UpdateTargetId);
+ }
+
+ DOMElement loadingElement = null;
+ if (ajaxOptions.LoadingElementId != null) {
+ loadingElement = Document.GetElementById(ajaxOptions.LoadingElementId);
+ }
+
+ // Create the AjaxContext for the request
+ AjaxContext ajaxContext = new AjaxContext(request, updateElement, loadingElement, ajaxOptions.InsertionMode);
+
+ // Run onBegin and check for cancellation
+ bool continueRequest = true;
+ if (ajaxOptions.OnBegin != null) {
+ // Have to convert to objects to force the "!== false" to be emitted.
+ // We want no return value to be treated as returning true, so we only want to cancel the request if the result is exactly "false"
+ continueRequest = (object)ajaxOptions.OnBegin(ajaxContext) != (object)false;
+ }
+
+ // Display the loading element, if specified
+ if (loadingElement != null) {
+ Type.InvokeMethod(typeof(Sys.UI.DomElement), "setVisible", ajaxContext.LoadingElement, true);
+ }
+
+ if (continueRequest) {
+ // Setup the callback
+ request.Completed += delegate(WebRequestExecutor executor) {
+ MvcHelpers.OnComplete(request, ajaxOptions, ajaxContext);
+ };
+
+ request.Invoke();
+ }
+ }
+
+ internal static void OnComplete(WebRequest request, AjaxOptions ajaxOptions, AjaxContext ajaxContext) {
+ // Update the AjaxContext
+ ajaxContext.Response = request.Executor;
+
+ // Run onComplete and check for cancellation
+ // Have to convert to objects to force the "=== false" to be emitted.
+ // We want no return value to be treated as returning true, so we only want to cancel the request if the result is exactly "false"
+ if (ajaxOptions.OnComplete != null && (object)ajaxOptions.OnComplete(ajaxContext) == (object)false) {
+ return;
+ }
+
+ // If the status code was successful...
+ int statusCode = ajaxContext.Response.StatusCode;
+ if ((statusCode >= 200 && statusCode < 300) || statusCode == 304 || statusCode == 1223) {
+ // If the status code is one of 204 (No Content), 304 (Not Modified), or 1223 (IE-specific code caused by 204), don't do the injection
+ if (statusCode != 204 && statusCode != 304 && statusCode != 1223) {
+ string contentType = ajaxContext.Response.GetResponseHeader("Content-Type");
+ if ((contentType != null) && (contentType.IndexOf("application/x-javascript") != -1)) {
+ Script.Eval(ajaxContext.Data);
+ }
+ else {
+ UpdateDomElement(ajaxContext.UpdateTarget, ajaxContext.InsertionMode, ajaxContext.Data);
+ }
+ }
+
+ if (ajaxOptions.OnSuccess != null) {
+ ajaxOptions.OnSuccess(ajaxContext);
+ }
+ }
+ else {
+ if (ajaxOptions.OnFailure != null) {
+ ajaxOptions.OnFailure(ajaxContext);
+ }
+ }
+
+ // Hide the loading panel, if there is one
+ if (ajaxContext.LoadingElement != null) {
+ Type.InvokeMethod(typeof(Sys.UI.DomElement), "setVisible", ajaxContext.LoadingElement, false);
+ }
+ }
+
+ public static void UpdateDomElement(DOMElement target, InsertionMode insertionMode, string content) {
+ if (target != null) {
+ switch (insertionMode) {
+ case InsertionMode.Replace:
+ target.InnerHTML = content;
+ break;
+ case InsertionMode.InsertBefore:
+ if (content != null && content.Length > 0) {
+ // Trimming here may be a bit too aggressive. It is done to make behavior consistent across
+ // browsers (since IE normalizes whitespace BEFORE building its internal data structures).
+ // However, it may end up trimming whitespace left intentionally by the developer.
+ target.InnerHTML = content + target.InnerHTML.TrimStart();
+ }
+ break;
+ case InsertionMode.InsertAfter:
+ if (content != null && content.Length > 0) {
+ // See comment for InsertBefore re: Trimming
+ target.InnerHTML = target.InnerHTML.TrimEnd() + content;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+
+}
5 mvc3/src/MicrosoftMvcAjaxScript/Properties/Script.jst
@@ -0,0 +1,5 @@
+//!----------------------------------------------------------
+//! Copyright (C) Microsoft Corporation. All rights reserved.
+//!----------------------------------------------------------
+//! MicrosoftMvcAjax.js
+#include[as-is] "%code%"
217 mvc3/src/MicrosoftMvcValidationScript/FieldContext.cs
@@ -0,0 +1,217 @@
+namespace Sys.Mvc {
+ using System;
+ using System.DHTML;
+ using Sys.UI;
+
+ public class FieldContext {
+
+ private const string _hasTextChangedTag = "__MVC_HasTextChanged";
+ private const string _hasValidationFiredTag = "__MVC_HasValidationFired";
+
+ private const string _inputElementErrorCss = "input-validation-error";
+ private const string _inputElementValidCss = "input-validation-valid";
+ private const string _validationMessageErrorCss = "field-validation-error";
+ private const string _validationMessageValidCss = "field-validation-valid";
+
+ private readonly DomEventHandler _onBlurHandler;
+ private readonly DomEventHandler _onChangeHandler;
+ private readonly DomEventHandler _onInputHandler;
+ private readonly DomEventHandler _onPropertyChangeHandler;
+
+ private ArrayList _errors = new ArrayList();
+
+ public string DefaultErrorMessage;
+ public DOMElement[] Elements = new DOMElement[0];
+ public readonly FormContext FormContext;
+ public bool ReplaceValidationMessageContents;
+ public DOMElement ValidationMessageElement;
+ public Validation[] Validations = new Validation[0];
+
+ public FieldContext(FormContext formContext) {
+ FormContext = formContext;
+
+ _onBlurHandler = Element_OnBlur;
+ _onChangeHandler = Element_OnChange;
+ _onInputHandler = Element_OnInput;
+ _onPropertyChangeHandler = Element_OnPropertyChange;
+ }
+
+ public void AddError(string message) {
+ AddErrors(new string[] { message });
+ }
+
+ public void AddErrors(string[] messages) {
+ if (!ValidationUtil.ArrayIsNullOrEmpty(messages)) {
+ ArrayList.AddRange(_errors, messages);
+ OnErrorCountChanged();
+ }
+ }
+
+ public void ClearErrors() {
+ ArrayList.Clear(_errors);
+ OnErrorCountChanged();
+ }
+
+ private void DisplayError() {
+ DOMElement validationMessageElement = ValidationMessageElement;
+ if (validationMessageElement != null) {
+ if (ReplaceValidationMessageContents) {
+ ValidationUtil.SetInnerText(validationMessageElement, (string)_errors[0]);
+ }
+ DomElement.RemoveCssClass(validationMessageElement, _validationMessageValidCss);
+ DomElement.AddCssClass(validationMessageElement, _validationMessageErrorCss);
+ }
+
+ // update actual input elements
+ DOMElement[] elements = Elements;
+ for (int i = 0; i < elements.Length; i++) {
+ DOMElement element = elements[i];
+ DomElement.RemoveCssClass(element, _inputElementValidCss);
+ DomElement.AddCssClass(element, _inputElementErrorCss);
+ }
+ }
+
+ private void DisplaySuccess() {
+ DOMElement validationMessageElement = ValidationMessageElement;
+ if (validationMessageElement != null) {
+ if (ReplaceValidationMessageContents) {
+ ValidationUtil.SetInnerText(validationMessageElement, "");
+ }
+ DomElement.RemoveCssClass(validationMessageElement, _validationMessageErrorCss);
+ DomElement.AddCssClass(validationMessageElement, _validationMessageValidCss);
+ }
+
+ // update actual input elements
+ DOMElement[] elements = Elements;
+ for (int i = 0; i < elements.Length; i++) {
+ DOMElement element = elements[i];
+ DomElement.RemoveCssClass(element, _inputElementErrorCss);
+ DomElement.AddCssClass(element, _inputElementValidCss);
+ }
+ }
+
+ private void Element_OnBlur(DomEvent e) {
+ if ((bool)Type.GetField(e.Target, _hasTextChangedTag) || (bool)Type.GetField(e.Target, _hasValidationFiredTag)) {
+ Validate("blur");
+ }
+ }
+
+ private void Element_OnChange(DomEvent e) {
+ Type.SetField(e.Target, _hasTextChangedTag, true);
+ }
+
+ // Firefox, Opera, Safari, Chrome - contents of an input element changed
+ private void Element_OnInput(DomEvent e) {
+ Type.SetField(e.Target, _hasTextChangedTag, true);
+ if ((bool)Type.GetField(e.Target, _hasValidationFiredTag)) {
+ Validate("input");
+ }
+ }
+
+ // IE - contents of an input element changed
+ private void Element_OnPropertyChange(DomEvent e) {
+ if ((string)Type.GetField(e.RawEvent, "propertyName") == "value") {
+ Type.SetField(e.Target, _hasTextChangedTag, true);
+ if ((bool)Type.GetField(e.Target, _hasValidationFiredTag)) {
+ Validate("input");
+ }
+ }
+ }
+
+ public void EnableDynamicValidation() {
+ DOMElement[] elements = Elements;
+ for (int i = 0; i < elements.Length; i++) {
+ DOMElement element = elements[i];
+
+ if (ValidationUtil.ElementSupportsEvent(element, "onpropertychange")) {
+ // IE
+
+ // DDB #227842: IE (before version 8) sometimes incorrectly fires the OnPropertyChange event
+ // for 'value' asynchronously when the element's CSS class is changed, which throws our
+ // validation library into an infinite loop and hangs the user's browser. We disable real-
+ // time validation in downlevel versions of IE to prevent this situation.
+ // 'documentMode' documented at http://msdn.microsoft.com/en-us/library/cc196988(VS.85).aspx
+ object compatMode = Script.Literal("document.documentMode");
+ if (compatMode != null && (int)compatMode >= 8) {
+ DomEvent.AddHandler(element, "propertychange", _onPropertyChangeHandler);
+ }
+ }
+ else {
+ // Firefox, Safari, Opera, Chrome
+ DomEvent.AddHandler(element, "input", _onInputHandler);
+ }
+
+ // Everybody else
+ DomEvent.AddHandler(element, "change", _onChangeHandler);
+ DomEvent.AddHandler(element, "blur", _onBlurHandler);
+ }
+ }
+
+ private string GetErrorString(object validatorReturnValue, string fieldErrorMessage) {
+ string fallbackErrorMessage = fieldErrorMessage ?? DefaultErrorMessage;
+
+ // overload return value as Boolean
+ if (validatorReturnValue is bool) {
+ return ((bool)validatorReturnValue) ? null /* success */ : fallbackErrorMessage /* failure */;
+ }
+
+ // overload return value as String
+ if (validatorReturnValue is string) {
+ return (((string)validatorReturnValue).Length != 0) ? (string)validatorReturnValue : fallbackErrorMessage;
+ }
+
+ // no error
+ return null;
+ }
+
+ private string GetStringValue() {
+ DOMElement[] elements = Elements;
+ return (elements.Length > 0) ? (string)Type.GetField(elements[0], "value") : null;
+ }
+
+ private void MarkValidationFired() {
+ DOMElement[] elements = Elements;
+ for (int i = 0; i < elements.Length; i++) {
+ DOMElement element = elements[i];
+ Type.SetField(element, _hasValidationFiredTag, true); // mark all as validation fired
+ }
+ }
+
+ private void OnErrorCountChanged() {
+ if (_errors.Length == 0) {
+ DisplaySuccess();
+ }
+ else {
+ DisplayError();
+ }
+ }
+
+ public string[] Validate(string eventName) {
+ Validation[] validations = Validations;
+ ArrayList errors = new ArrayList();
+ string value = GetStringValue();
+
+ // build up the list of all errors
+ for (int i = 0; i < validations.Length; i++) {
+ Validation validation = validations[i];
+ ValidationContext context = new ValidationContext();
+ context.EventName = eventName;
+ context.FieldContext = this;
+ context.Validation = validation;
+
+ object retVal = validation.Validator(value, context);
+
+ string errorMessage = GetErrorString(retVal, validation.FieldErrorMessage);
+ if (!ValidationUtil.StringIsNullOrEmpty(errorMessage)) {
+ ArrayList.Add(errors, errorMessage);
+ }
+ }
+
+ MarkValidationFired();
+ ClearErrors();
+ AddErrors((string[])errors);
+ return (string[])errors;
+ }
+
+ }
+}
266 mvc3/src/MicrosoftMvcValidationScript/FormContext.cs
@@ -0,0 +1,266 @@
+namespace Sys.Mvc {
+ using System;
+ using System.DHTML;
+ using Sys.UI;
+
+ public class FormContext {
+
+ private const string _validationSummaryErrorCss = "validation-summary-errors";
+ private const string _validationSummaryValidCss = "validation-summary-valid";
+
+ private const string _formValidationTag = "__MVC_FormValidation";
+
+ private readonly DomEventHandler _onClickHandler;
+ private readonly DomEventHandler _onSubmitHandler;
+
+ private ArrayList _errors = new ArrayList();
+ private InputElement _submitButtonClicked;
+ private readonly DOMElement _validationSummaryElement;
+ private readonly DOMElement _validationSummaryULElement;
+
+ public FieldContext[] Fields = new FieldContext[0];
+ private FormElement FormElement;
+
+ public bool ReplaceValidationSummary;
+
+ public FormContext(FormElement formElement, DOMElement validationSummaryElement) {
+ FormElement = formElement;
+ _validationSummaryElement = validationSummaryElement;
+
+ Type.SetField(formElement, _formValidationTag, this);
+
+ // need to retrieve the actual <ul> element, since that will be dynamically modified
+ if (validationSummaryElement != null) {
+ DOMElementCollection ulElements = validationSummaryElement.GetElementsByTagName("ul");
+ if (ulElements.Length > 0) {
+ _validationSummaryULElement = ulElements[0];
+ }
+ }
+
+ _onClickHandler = Form_OnClick;
+ _onSubmitHandler = Form_OnSubmit;
+ }
+
+ // not meant for public use, but must be marked public so that it's callable by the .jst
+ public static void _Application_Load() {
+ ArrayList allFormOptions = (ArrayList)Type.GetField(typeof(Window), "mvcClientValidationMetadata");
+ if (allFormOptions != null) {
+ while (allFormOptions.Length > 0) {
+ JsonValidationOptions thisFormOptions = (JsonValidationOptions)Type.InvokeMethod(allFormOptions, "pop");
+ ParseJsonOptions(thisFormOptions);
+ }
+ }
+ }
+
+ public void AddError(string message) {
+ AddErrors(new string[] { message });
+ }
+
+ public void AddErrors(string[] messages) {
+ if (!ValidationUtil.ArrayIsNullOrEmpty(messages)) {
+ ArrayList.AddRange(_errors, messages);
+ OnErrorCountChanged();
+ }
+ }
+
+ public void ClearErrors() {
+ ArrayList.Clear(_errors);
+ OnErrorCountChanged();
+ }
+
+ private void DisplayError() {
+ if (_validationSummaryElement != null) {
+ if (_validationSummaryULElement != null) {
+ // replace all children with the current error list
+ ValidationUtil.RemoveAllChildren(_validationSummaryULElement);
+ for (int i = 0; i < _errors.Length; i++) {
+ DOMElement liElement = Document.CreateElement("li");
+ ValidationUtil.SetInnerText(liElement, (string)_errors[i]);
+ _validationSummaryULElement.AppendChild(liElement);
+ }
+ }
+
+ DomElement.RemoveCssClass(_validationSummaryElement, _validationSummaryValidCss);
+ DomElement.AddCssClass(_validationSummaryElement, _validationSummaryErrorCss);
+ }
+ }
+
+ private void DisplaySuccess() {
+ DOMElement validationSummaryElement = _validationSummaryElement;
+
+ if (validationSummaryElement != null) {
+ DOMElement validationSummaryULElement = _validationSummaryULElement;
+ if (validationSummaryULElement != null) {
+ // delete all children
+ validationSummaryULElement.InnerHTML = "";
+ }
+
+ DomElement.RemoveCssClass(validationSummaryElement, _validationSummaryErrorCss);
+ DomElement.AddCssClass(validationSummaryElement, _validationSummaryValidCss);
+ }
+ }
+
+ public void EnableDynamicValidation() {
+ DomEvent.AddHandler(FormElement, "click", _onClickHandler);
+ DomEvent.AddHandler(FormElement, "submit", _onSubmitHandler);
+ }
+
+ private InputElement FindSubmitButton(DOMElement element) {
+ // element: the form element that is active
+
+ if (element.Disabled) {
+ return null;
+ }
+
+ string tagName = element.TagName.ToUpperCase();
+ InputElement inputElement = (InputElement)element;
+ if (tagName == "INPUT") {
+ string type = inputElement.Type;
+ if (type == "submit" || type == "image") {
+ return inputElement;
+ }
+ }
+ else if ((tagName == "BUTTON") && (inputElement.Type == "submit")) {
+ return inputElement;
+ }
+
+ return null;
+ }
+
+ // hooking the click event allows us to find the submit button that started this whole process
+ private void Form_OnClick(DomEvent e) {
+ _submitButtonClicked = FindSubmitButton(e.Target);
+ }
+
+ private void Form_OnSubmit(DomEvent e) {
+ FormElement form = (FormElement)e.Target;
+
+ InputElement submitButton = _submitButtonClicked;
+ if (submitButton != null && (bool)Type.GetField(submitButton, "disableValidation")) {
+ return; // don't perform validation
+ }
+
+ string[] errorMessages = Validate("submit");
+ if (!ValidationUtil.ArrayIsNullOrEmpty(errorMessages)) {
+ e.PreventDefault(); // there was an error
+ }
+ }
+
+ private static DOMElement[] GetFormElementsWithName(FormElement formElement, string name) {
+ ArrayList allElementsWithNameInForm = new ArrayList();
+
+ DOMElementCollection allElementsWithName = Document.GetElementsByName(name);
+ for (int i = 0; i < allElementsWithName.Length; i++) {
+ DOMElement thisElement = allElementsWithName[i];
+ if (IsElementInHierarchy(formElement, thisElement)) {
+ ArrayList.Add(allElementsWithNameInForm, thisElement);
+ }
+ }
+
+ return (DOMElement[])allElementsWithNameInForm;
+ }
+
+ public static FormContext GetValidationForForm(FormElement formElement) {
+ return (FormContext)Type.GetField(formElement, _formValidationTag);
+ }
+
+ private static bool IsElementInHierarchy(DOMElement parent, DOMElement child) {
+ while (child != null) {
+ if (parent == child) {
+ return true;
+ }
+ child = child.ParentNode;
+ }
+ return false;
+ }
+
+ private void OnErrorCountChanged() {
+ if (_errors.Length == 0) {
+ DisplaySuccess();
+ }
+ else {
+ DisplayError();
+ }
+ }
+
+ internal static FormContext ParseJsonOptions(JsonValidationOptions options) {
+ // First hook up the form logic
+ FormElement formElement = (FormElement)Document.GetElementById(options.FormId);
+ DOMElement validationSummaryElement = (!ValidationUtil.StringIsNullOrEmpty(options.ValidationSummaryId))
+ ? Document.GetElementById(options.ValidationSummaryId)
+ : null;
+
+ FormContext formContext = new FormContext(formElement, validationSummaryElement);
+ formContext.EnableDynamicValidation();
+ formContext.ReplaceValidationSummary = options.ReplaceValidationSummary;
+
+ // Then hook up the field logic
+ for (int i = 0; i < options.Fields.Length; i++) {
+ JsonValidationField field = options.Fields[i];
+ DOMElement[] fieldElements = GetFormElementsWithName(formElement, field.FieldName);
+ DOMElement validationMessageElement = (!ValidationUtil.StringIsNullOrEmpty(field.ValidationMessageId))
+ ? Document.GetElementById(field.ValidationMessageId)
+ : null;
+
+ FieldContext fieldContext = new FieldContext(formContext);
+ ArrayList.AddRange((ArrayList)(object)fieldContext.Elements, fieldElements);
+ fieldContext.ValidationMessageElement = validationMessageElement;
+ fieldContext.ReplaceValidationMessageContents = field.ReplaceValidationMessageContents;
+
+ // Hook up rules
+ for (int j = 0; j < field.ValidationRules.Length; j++) {
+ JsonValidationRule rule = field.ValidationRules[j];
+ Validator validator = ValidatorRegistry.GetValidator(rule);
+ if (validator != null) {
+ Validation validation = new Validation();
+ validation.FieldErrorMessage = rule.ErrorMessage;
+ validation.Validator = validator;
+ ArrayList.Add((ArrayList)(object)fieldContext.Validations, validation);
+ }
+ }
+
+ fieldContext.EnableDynamicValidation();
+ ArrayList.Add((ArrayList)(object)formContext.Fields, fieldContext);
+ }
+
+ // hook up callback so that it can be executed by the AJAX code
+ ArrayList registeredValidatorCallbacks = (ArrayList)Type.GetField(formElement, "validationCallbacks");
+ if (registeredValidatorCallbacks == null) {
+ registeredValidatorCallbacks = new ArrayList();
+ Type.SetField(formElement, "validationCallbacks", registeredValidatorCallbacks);
+ }
+ Type.InvokeMethod(registeredValidatorCallbacks, "push", (ValidationCallback)delegate() {
+ return ValidationUtil.ArrayIsNullOrEmpty(formContext.Validate("submit"));
+ });
+
+ return formContext;
+ }
+
+ // returns an array of validation error messages
+ public string[] Validate(string eventName) {
+ FieldContext[] fields = Fields;
+ ArrayList errors = new ArrayList();
+
+ for (int i = 0; i < fields.Length; i++) {
+ FieldContext field = fields[i];
+
+ if (!field.Elements[0].Disabled) { // Dev10 Bug #920136
+ string[] thisErrors = field.Validate(eventName);
+ if (thisErrors != null) {
+ ArrayList.AddRange(errors, thisErrors);
+ }
+ }
+ }
+
+ if (ReplaceValidationSummary) {
+ ClearErrors();
+ AddErrors((string[])errors);
+ }
+
+ return (string[])errors;
+ }
+
+ }
+
+ internal delegate bool ValidationCallback();
+}
18 mvc3/src/MicrosoftMvcValidationScript/JsonValidationField.cs
@@ -0,0 +1,18 @@
+namespace Sys.Mvc {
+ using System;
+
+ [Record]
+ public sealed class JsonValidationField {
+ [PreserveCase]
+ public string FieldName;
+
+ [PreserveCase]
+ public bool ReplaceValidationMessageContents;
+
+ [PreserveCase]
+ public string ValidationMessageId;
+
+ [PreserveCase]
+ public JsonValidationRule[] ValidationRules;
+ }
+}
18 mvc3/src/MicrosoftMvcValidationScript/JsonValidationOptions.cs
@@ -0,0 +1,18 @@
+namespace Sys.Mvc {
+ using System;
+
+ [Record]
+ public sealed class JsonValidationOptions {
+ [PreserveCase]
+ public JsonValidationField[] Fields;
+
+ [PreserveCase]
+ public string FormId;
+
+ [PreserveCase]
+ public bool ReplaceValidationSummary;
+
+ [PreserveCase]
+ public string ValidationSummaryId;
+ }
+}
15 mvc3/src/MicrosoftMvcValidationScript/JsonValidationRule.cs
@@ -0,0 +1,15 @@
+namespace Sys.Mvc {
+ using System;
+
+ [Record]
+ public sealed class JsonValidationRule {
+ [PreserveCase]
+ public string ErrorMessage;
+
+ [PreserveCase]
+ public string ValidationType;
+
+ [PreserveCase]
+ public Dictionary ValidationParameters;
+ }
+}
74 mvc3/src/MicrosoftMvcValidationScript/MicrosoftMvcValidationScript.csproj
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{83CAA00D-A07D-45FD-8CE3-3298CFF374CD}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>
+ </RootNamespace>
+ <AssemblyName>MicrosoftMvcValidation</AssemblyName>
+ <NoStdLib>True</NoStdLib>
+ <CopyReferences>True</CopyReferences>
+ <TemplateFile>Properties\Script.jst</TemplateFile>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <NoWarn>0028, 1591</NoWarn>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <UpgradeBackupLocation />
+ <SccProjectName>
+ </SccProjectName>
+ <SccLocalPath>
+ </SccLocalPath>
+ <SccAuxPath>
+ </SccAuxPath>
+ <SccProvider>
+ </SccProvider>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <OutputPath>..\..\bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <DocumentationFile>
+ </DocumentationFile>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <OutputPath>..\..\bin\Release\</OutputPath>
+ <DefineConstants>
+ </DefineConstants>
+ <DocumentationFile>bin\Release\MvcValidationScript.xml</DocumentationFile>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="..\..\tools\ScriptSharp\Atlas\aacorlib.dll" />
+ <Reference Include="..\..\tools\ScriptSharp\Atlas\MicrosoftAjax.dll" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Properties\Script.jst" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="NumberValidator.cs" />
+ <Compile Include="FormContext.cs" />
+ <Compile Include="Validation.cs" />
+ <Compile Include="FieldContext.cs" />
+ <Compile Include="JsonValidationField.cs" />
+ <Compile Include="JsonValidationOptions.cs" />
+ <Compile Include="JsonValidationRule.cs" />
+ <Compile Include="RangeValidator.cs" />
+ <Compile Include="RegularExpressionValidator.cs" />
+ <Compile Include="RequiredValidator.cs" />
+ <Compile Include="StringLengthValidator.cs" />
+ <Compile Include="ValidationContext.cs" />
+ <Compile Include="ValidationUtil.cs" />
+ <Compile Include="Validator.cs" />
+ <Compile Include="ValidatorCreator.cs" />
+ <Compile Include="ValidatorRegistry.cs" />
+ </ItemGroup>
+ <Import Project="..\..\tools\ScriptSharp\nStuff.ScriptSharp.targets" />
+</Project>
23 mvc3/src/MicrosoftMvcValidationScript/NumberValidator.cs
@@ -0,0 +1,23 @@
+namespace Sys.Mvc {
+ using System;
+
+ public sealed class NumberValidator {
+
+ public NumberValidator() {
+ }
+
+ public static Validator Create(JsonValidationRule rule) {
+ return new NumberValidator().Validate;
+ }
+
+ public object Validate(string value, ValidationContext context) {
+ if (ValidationUtil.StringIsNullOrEmpty(value)) {
+ return true; // let the RequiredValidator handle this case
+ }
+
+ Number n = Number.ParseLocale(value);
+ return (!Number.IsNaN(n));
+ }
+
+ }
+}
12 mvc3/src/MicrosoftMvcValidationScript/Properties/Script.jst
@@ -0,0 +1,12 @@
+//!----------------------------------------------------------
+//! Copyright (C) Microsoft Corporation. All rights reserved.
+//!----------------------------------------------------------
+//! MicrosoftMvcValidation.js
+
+#include[as-is] "%code%"
+
+// register validation
+Sys.Application.add_load(function() {
+ Sys.Application.remove_load(arguments.callee);
+ Sys.Mvc.FormContext._Application_Load();
+});
30 mvc3/src/MicrosoftMvcValidationScript/RangeValidator.cs
@@ -0,0 +1,30 @@
+namespace Sys.Mvc {
+ using System;
+
+ public sealed class RangeValidator {
+
+ private readonly Number _minimum;
+ private readonly Number _maximum;
+
+ public RangeValidator(Number minimum, Number maximum) {
+ _minimum = minimum;
+ _maximum = maximum;
+ }
+
+ public static Validator Create(JsonValidationRule rule) {
+ Number min = (Number)rule.ValidationParameters["min"];
+ Number max = (Number)rule.ValidationParameters["max"];
+ return new RangeValidator(min, max).Validate;
+ }
+
+ public object Validate(string value, ValidationContext context) {
+ if (ValidationUtil.StringIsNullOrEmpty(value)) {
+ return true; // let the RequiredValidator handle this case
+ }
+