Commit Graph

2239 Commits

Author SHA1 Message Date
Hisham Bin Ateya fe3d45fad1 Adding AllowAnonymousToPage & AllowAnonymousToFolder
Fixes #5884
2017-03-31 20:17:31 -07:00
Doug Bunting 2cabd589ac Add more `ExpressionHelper` tests
- #5792
2017-03-31 15:22:29 -07:00
Kiran Challa e25bfa8919 Skipping model validation tests temporarily to unblock mirror
- A fix was already checked in f3d0e4d0dd but this did not make into the netcoreapp2.0 shared runtime
2017-03-31 12:38:10 -07:00
Ryan Nowak 951341f612 Add a comment for our cool workaround 2017-03-31 11:19:22 -07:00
Ryan Nowak 7904c7756d Add a simple action selection benchmark 2017-03-31 11:19:22 -07:00
Ryan Nowak 7d4ccd9c58 Add benchmark project and boilerplate 2017-03-31 11:19:22 -07:00
Steve Sanderson 4f351bd37c Add support for media type suffixes (#5273, #6032) 2017-03-31 10:20:43 +01:00
Ryan Brandenburg c47825944d Remove Microsoft.AspNetCore.Mvc.Razor.Host 2017-03-29 16:50:39 -07:00
Ajay Bhargav Baaskaran 5fca8da665 React to razor changes 2017-03-29 16:45:37 -07:00
Doug Bunting 1672820e4e Add functional test covering an `IList<T>` property
- #5656
2017-03-29 12:32:06 -07:00
Jass Bagga eda5028cf4 Add TagHelperComponentTagHelper
Addresses #5728
2017-03-29 11:29:24 -07:00
Kiran Challa c18f0780c1 [Fixes #5413] JsonOutputFormatter adds all closing brackets when exceptions are thrown 2017-03-28 23:09:18 -07:00
Pranav K b22326323a Add properties to Page and PageModel
Fixes #6008
2017-03-28 13:26:38 -07:00
twirpx 58317b18ce Fixing NRE when CacheTagHelper throws and exception (#5989)
Fixes #5988
2017-03-27 12:45:22 -07:00
Derek Gray 575fe68b2b Order enum values by DisplayAttribute.Order
Fixes #4297
2017-03-27 12:22:35 -07:00
Doug Bunting 824d65ca3d Remove `ValueProviderResultExtensions`
- #5063
- update tests that used one extension method to instead use `ModelBindingHelper` directly

nit: `mbc` -> `context`
2017-03-24 22:17:34 -07:00
Pranav K e7101f248a Support model binding to Razor Pages properties on page and PageModel classes
Fixes #5952
2017-03-24 07:45:19 -07:00
Pranav K f3ee4064a2 React to Razor changes 2017-03-22 19:58:46 -07:00
Pranav K 705c36921a Use alternate workaround for #6005 2017-03-22 19:14:46 -07:00
Pranav K 18785dbed6 Add System.Reflection.TypeExtensions to fix net46 tests 2017-03-22 06:33:04 -07:00
Pranav K badb6ce8e5 Remove net451 as a cross-compile target 2017-03-22 06:32:50 -07:00
Ryan Brandenburg 66deaf0b3f Make test of @page/@model whitespace 2017-03-20 10:36:58 -07:00
Ryan Brandenburg e6cb639cc0 Add handler functional test 2017-03-20 10:05:29 -07:00
Ryan Brandenburg 270f66198f Remove Razor from projects 2017-03-17 15:00:39 -07:00
Ajay Bhargav Baaskaran 1fdc5132cb React to TagHelper descriptors api cleanup 2017-03-17 10:51:02 -07:00
Jass Bagga 1197657e5b TempData property attribute
Addresses #5600
2017-03-16 16:34:35 -07:00
Ajay Bhargav Baaskaran ce28117b8b Normalize line endings in RazorEngine tests 2017-03-16 15:51:10 -07:00
Ajay Bhargav Baaskaran 74889c8f99 Modified MvcRazorHost tests to use new Razor 2017-03-16 11:13:42 -07:00
Nate McMaster 6f7717a381 Unify dependency versions to one file 2017-03-15 16:54:32 -07:00
Pranav K bee1a55cff Use RazorPagesOptions.RootDirectory when looking for page hierarchies.
Fixes #5915
2017-03-14 18:56:50 -07:00
Pranav K de25357c28 Do not throw if a library does not have a runtime component
Fixes #5690
2017-03-14 15:07:50 -07:00
Ryan Brandenburg 82d87df166 Fix warning as error 2017-03-14 12:44:57 -07:00
Ajay Bhargav Baaskaran 2ffaa88830 Using NullLogger types from Logging.Abstractions 2017-03-14 12:24:18 -07:00
Ryan Brandenburg 365ae19c8b Add InvalidTagHelperIndexerAssignment to RazorPageBase 2017-03-14 10:04:15 -07:00
hishamco e44d875df4 Adding AuthorizePage & AuthorizeFolder without requiring a policy
Refactoring
2017-03-13 16:39:52 -07:00
Pranav K f7fd5114b3 Introduce MvcRazorTemplateEngine 2017-03-13 16:33:13 -07:00
Pranav K 4faef7afaf Cache more things in HandlerMethodDescriptor
Add tests for DefaultPageHandlerMethodSelector
2017-03-13 13:15:26 -07:00
Pranav K 7b53ba1f6b Reacting to https://github.com/aspnet/Razor/issues/1063 2017-03-13 09:46:36 -07:00
Jass Bagga cd9899363f React to new ctor for TagHelperContext
Razor issue: aspnet/Razor#1065
Razor PR: aspnet/Razor#1066
2017-03-10 13:45:14 -08:00
Ryan Brandenburg 1c74e31715 Add tests for PageActionInvokerProvider (#5882) 2017-03-09 16:19:20 -08:00
Ryan Brandenburg 7f3f6957be Set path in DefaultPageFactory (#5911) 2017-03-09 16:15:43 -08:00
Nick Chapsas 015dafc25f [Feature] String should be an acceptable value for a checkbox if it can be parsed as a boolean (#5845)
- `string` should be an acceptable value for a checkbox if it can be parsed as a `bool`
- `throw` with different resources when `ModelType` isn't `bool` or `string` and when `string` value is not acceptable
2017-03-08 14:22:28 -08:00
Ryan Brandenburg d9d280d1ef Make CookieTempDataProvider the default ITempDataProvider (#5892) 2017-03-07 16:04:47 -08:00
Ryan Brandenburg 4a20c849cb Add functional test for Page.View() (#5896) 2017-03-06 16:19:41 -08:00
Doug Bunting 5c96a7cdef Use an alternate workaround for #5873
- use specific workaround for Microsoft/vstest#428
  - generating an executable for a test project is a bit too weird
- also work around dotnet/sdk#926
  - generating an executable covered this as well

nit: add and update comments about other workarounds in the functional tests project
2017-03-06 14:05:21 -08:00
Doug Bunting 3fe0b569d6 Fix tests on Windows with `core.autocrlf=input`
- #5907
2017-03-06 13:59:06 -08:00
Pranav K 145d27f9b3 Add a PagesOption type that allows configuring the root for Page file discovery
Fixes #5785
2017-03-03 17:20:07 -08:00
Ryan Brandenburg 85e28ae478 Trim quotes from template (#5838) 2017-03-03 09:52:36 -08:00
Pranav K 7cadb58e12 Add convenience extension methods for IPageApplicationModelConvention 2017-03-02 17:38:04 -08:00
Doug Bunting 9b3b3e91bd Re-enable functional tests on full .NET Framework
- #5873
- creating an EXE for the test project seems to work around #5873
  - also avoids dotnet/sdk#926 when building in Visual Studio

nit: clean up duplicate test data
2017-03-01 23:08:46 -08:00
Ajay Bhargav Baaskaran f7c2e5bffc [Fixes #5844] Using ExtensionIRNode for Inject directive 2017-03-01 09:45:47 -08:00
N. Taylor Mullen acfad83aa6 Migrate to MSBuild
- thanx to @NTaylorMullen for initial conversion
  - e.g. AssemblyInfo.cs files were already minimized or removed :)
- allow `>=` RC3 CLI's to build and run MVC
- work around several dotnet migration issues; see #5482
- disable full .NET Framework runs of functional tests; see #5873
- remove `Microsoft.DotNet.InternalAbstractions` and `System.Xml.XmlDocument` dependencies
- remove project.json (!!), *.xproj, .notest, and web.config files

Redo earlier changes:
- apply test migration to .NET 4.5.2 in *.csproj world
  - see 63507c8 for previous, project.json work
- apply dependency version downgrade from 0097e40 in *.csproj world

Make other test-related changes:
- make Microsoft.AspNetCore.Mvc.TestDiagnosticListener a regular class library
- add support for `/p:GenerateBaselines=true` for functional and Razor.Host tests
- separate `GetCSharpTypeName_ReturnsCorrectTypeNames_ForOutParameter()` test
  - work around inability to deserialize a odd `ref` type
  - xUnit and vstest now serialize / deserialze test data more often
- skip poor test mentioned in #5768
- work around Microsoft/vstest#392
  - rename tests to avoid duplicates
- work around Microsoft/vstest#419
  - set up created `AppDomain`s with current `ApplicationBase`
2017-02-28 21:20:39 -08:00
Pranav K de30c5822a * Cache ExecutorFactory as part of CompiledActionDescriptor
* Add tests for ExecutorFactory
2017-02-24 11:56:13 -08:00
martincostello 498c1c570d Update error message
Update error message based on PR feedback to less C# specific.
2017-02-23 14:21:58 -08:00
martincostello 9950325269 Update view compilation error message
Update view compilation error message for csproj instead of
project.json.
2017-02-23 14:21:58 -08:00
Ryan Nowak e11e6b3be7 Add TempData property and some functional tests 2017-02-22 08:14:02 -08:00
Ajay Bhargav Baaskaran ed9025cc5b React to aspnet/Razor#1030 - Enable skipped test 2017-02-21 17:32:44 -08:00
Ryan Nowak 19331f9532 Adding some basic functional tests
I ran into a blocking issue where page handlers aren't picked up, so I
fixed it. Logging another issue to follow up with better tests for this.
2017-02-21 16:41:25 -08:00
Ryan Nowak 36e4dbe941 Adding a functional test project for Razor Pages 2017-02-21 08:25:30 -08:00
Doug Bunting 63507c8da9 Bump test projects up to .NET 4.5.2
- aspnet/Testing#248
- xUnit no longer supports .NET 4.5.1
- update AppVeyor config so this framework version is available
- build tests for desktop .NET only on Windows
2017-02-21 07:15:36 -08:00
Ajay Bhargav Baaskaran 11d747fc33 React to CSharpTokenIRNode being removed 2017-02-17 19:31:33 -08:00
Ajay Bhargav Baaskaran 0f5d5ff3b5 React to aspnet/Razor#1017 2017-02-17 16:01:54 -08:00
Jass Bagga 927e75870d Add BindingSourceMetadataProvider
Addresses #5673
2017-02-17 13:22:10 -08:00
Ryan Brandenburg 366dbde378 Add culture constructor to RouteValueProvider 2017-02-16 14:47:34 -08:00
Nate McMaster 0097e40e46 Downgrade to stable packages 2017-02-15 14:23:48 -08:00
Kiran Challa a00acceaa9 Merge branch 'rel/1.1.2' into dev 2017-02-15 12:43:37 -08:00
Kiran Challa 29647fda33 [Fixes #5801] Move call to validate constructor in ComplexTypeModelBinder into CreateModel 2017-02-15 12:33:01 -08:00
Ajay Bhargav Baaskaran 38e1e7d14e React to aspnet/Razor#996 2017-02-14 15:11:39 -08:00
Pranav K eb820106e2 Generate the class name from relative path 2017-02-14 09:41:05 -08:00
Ajay Bhargav Baaskaran 44048331e9 Make `ViewComponent.View()` overloads respect explicitly passed in model even when `null` 2017-02-13 17:08:48 -08:00
Pranav K 35edc299d7 Fix test failures
Fixes #5794
2017-02-13 12:03:10 -08:00
Ryan Nowak 2cdd84f437 Remove pranav's hack
This is part 1 of the right fix for the directive getting removed. This
pass has the wrong order, an it should be running sooner before the
directive is processed by the default processor.
2017-02-13 09:23:58 -08:00
Ryan Nowak af5648c1f7 Merge branch 'rel/1.1.2' into dev 2017-02-13 08:34:18 -08:00
Ryan Nowak 531c11df2a Fix 5594 - ExceptionHandled + Result is broken
This change ensures that setting ExceptionContext.Result will always
execute if set. The problem with 1.1.0 is that when we had a real short
circuit the wrong set of conditions were checked. I suspect that when you
set ExceptionFilter.Result and didn't short circuit that result filters
were also running (which is a bug).

Added a few tests that verify that the result doesn't trigger result
filters.

I did some general cleanup on this code path to make the state transitions
more clear.

No exception was thrown -> BeginResult
Exception was handled -> ExceptionHandled
Exception was not handled -> gets rethrown
2017-02-13 07:58:32 -08:00
Doug Bunting a5c7a7e491 Bring tests from fa710e6 (rel/1.0.3) into dev
- relates to #5595 which was a 1.0.x-only problem
2017-02-11 13:48:21 -08:00
Doug Bunting fc40985412 Merge branch 'rel/1.1.2' into dev 2017-02-10 14:55:32 -08:00
Doug Bunting 8ee3d45ef1 Do not cache expressions containing method calls
- #5655
- also make `ExpressionTextCache` more robust for defence-in-depth

nits:
- two `null` expression nodes are equal
- declare data properties as `TheoryData<T>`
2017-02-10 14:50:09 -08:00
Kiran Challa 842d661ac2 [Fixes #5698] Regression in 1.1 model binding for model types without default constructor
- Also reverts "Check for default constructor in ComplexTypeModelBinderProvider" commit d09e921c4a.
2017-02-10 11:10:02 -08:00
Pranav K bc3a741eee Use DocumentClassifierPassBase
Workaround issue with the model directive disappearing
2017-02-09 20:30:31 -08:00
Ryan Brandenburg bd9e431873 Order IgnoreAntiforgeryTokenAttribute and add test (#5765) 2017-02-08 09:37:43 -08:00
Pranav K f474d8bc52 React to optional Razor directive token feature 2017-02-07 21:58:31 -08:00
Ryan Nowak 314aa366e1 Add TempData property support for Pages 2017-02-07 15:27:02 -08:00
Pranav K 2ff80ffb49 Porting DefaultPageHandlerMethodSelector and ExecutorFactory 2017-02-07 12:44:27 -08:00
Pranav K 624909763b Make _PageImports work
Add support for generating the Model property
2017-02-07 11:13:15 -08:00
Pranav K 9f3dfd9819 Make RazorPages work E2E 2017-02-06 19:05:31 -08:00
Ajay Bhargav Baaskaran c349929cc1 Port old Razor tests to new Razor 2017-02-03 17:09:18 -08:00
Pranav K 8d5abd433f Add support for PageStarts 2017-02-03 15:57:00 -08:00
Kiran Challa c95c2a5a6d [Fixes #5686] Extend `ModelMetadata` to reduce ugliness 2017-02-03 11:37:28 -08:00
Ryan Brandenburg dc0be8d747 SaveTempDataFilter handle write to body
(cherry picked from commit 03cdd15e5c)
2017-02-03 10:41:36 -08:00
Ryan Nowak cf70ed663b Merge tag 'rel/1.1.1' into dev 2017-02-03 10:31:17 -08:00
Ajay Bhargav Baaskaran 1777f7babd Enabling Razor Instrumentation 2017-02-01 15:29:09 -08:00
Ryan Nowak 4c62eb89af Unit tests for VCTH and model directive 2017-01-31 13:14:20 -08:00
Ryan Nowak 3ade209bf0 Delete using chunk tests
This feature is implemented by Razor and already has tests there.
2017-01-31 12:42:57 -08:00
Ryan Nowak 6c55754823 Fix failing linemappings tests
Need to use a consistent newline, since these fail on xplat.
2017-01-31 12:41:54 -08:00
Ryan Nowak 705369ee51 Add unit tests for ModelExpressionPass
Add unit tests for @inject
2017-01-30 19:08:39 -08:00
Ryan Nowak b79f8384b0 Make some methods public for ViewCompilation. 2017-01-30 13:46:27 -08:00
Ryan Nowak 84d2e027f5 Use new Razor in MVC 2017-01-30 10:55:49 -08:00
Jass Bagga 7449ffad74 Add include and exclude attributes to EnvironmentTagHelper
Addresses #5671
2017-01-27 14:46:53 -08:00
Joonas Westlin d44c9aee1e Added printing of route values when a route is not matched 2017-01-27 11:31:05 -08:00
Kiran Challa 17dc23a024 [Fixes #5637] Make CookieName of CookieTempDataProvider configurable 2017-01-27 11:01:26 -08:00
Ryan Brandenburg 03cdd15e5c SaveTempDataFilter handle write to body 2017-01-27 10:54:00 -08:00
Pranav K 3e214e2399 Introducing IPageModelActivatorProvider
Fixes #5480
2017-01-26 11:31:14 -08:00
Doug Bunting cc584ada39 Remove extra lines in 1840d68 2017-01-26 08:20:52 -08:00
Andrei Ignat 1840d6823b Addresses #5694 (#5695)
* Add "
`Microsoft.AspNetCore.StaticFiles": "1.2.0-*"`
to project,json
Add
`app.UseStaticFiles();`
in the
`public void Configure(IApplicationBuilder app)`
from `Startup` class.

Addresses #5694
2017-01-26 08:18:19 -08:00
Jass Bagga 9b1271ba19 Remove obsolete DefaultHtmlGenerator ctor (#5711) 2017-01-25 16:25:12 -08:00
Kiran Challa 42ae78a360 [Fixes #5012] ProducesAttribute should not inherit from ResultFilterAttribute 2017-01-25 14:00:35 -08:00
Kiran Challa 8ac6b6699f [Fixes #4945] Simple string returned by controller action is not a valid JSON! 2017-01-25 13:29:18 -08:00
Ryan Nowak 5885feb7c0 Fixes a parsing bug with the AcceptHeaderParser
When we find an invalid character at the end of a media type value we
should advance and skip over it.
2017-01-23 13:12:40 -08:00
Ryan Brandenburg 305748a800 Move classes out of .Internal 2017-01-19 11:11:28 -08:00
Ryan Brandenburg 6396e14504 Add null-check back to MediaType 2017-01-18 16:56:08 -08:00
Pranav K 24efd4268b Pin the version of RazorTooling packages to 1.1.0-preview4-final 2017-01-17 11:55:15 -08:00
Pranav K e749a80b30 Check for empty location in ViewsFeatureProvider
Fixes #5675
2017-01-17 11:07:48 -08:00
Doug Bunting ce53675b87 Add `[ValidateNever]` and `IPropertyValidationFilter`
- #5642
- lazy-load `ValidationEntry.Model`
  - avoids `Exception`s when moving to a property that will not be validated

nits:
- remove duplicate code in `ValidationVisitor`
- clarify "all properties of" doc comments
  - also add missing `<param>` doc in `ViewDataInfo`
2017-01-15 21:40:29 -08:00
Jass Bagga 07c22f2b29 Mutate API description parameter type from JsonPatchDocument to Operation[]
Addresses #5464
2017-01-13 16:39:08 -08:00
Jass Bagga f95d49c870 Change datetime to datetime-local
Addresses #4871
2017-01-13 15:40:30 -08:00
Ryan Brandenburg 93774a0234 Mitigate MediaType overflow 2017-01-13 12:51:19 -08:00
Pranav K a7abdeabcd Introducing PageActionInvoker 2017-01-13 11:49:02 -08:00
Pranav K 6b0282fa84 Commonize code from ControllerActionInvokerCache and PageFilterFactoryProvider 2017-01-11 10:53:23 -08:00
Kiran Challa de0f277892 Fix attribute routing error message related to replace tokens 2017-01-04 15:43:57 -08:00
Pranav K 78492b39d8 Introduce a base type for executing auth and resource filters. 2017-01-03 11:14:15 -08:00
Pranav K 2b8233932a Add IPageFactory and IPageActivator 2016-12-29 15:11:29 -08:00
Jass Bagga 9146fce4ec Add extension method for IParameterModelConvention. (#5640) 2016-12-27 16:49:12 -08:00
Pranav K a42006d295 Workarond type collision
Fixes compilation error "The type 'XmlNode' exists in both 'System.Xml.ReaderWriter, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Xml.XmlDocument, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'"
2016-12-21 16:47:14 -08:00
Pranav K 2b50ec99df Updating to 4.4 CoreFx packages 2016-12-21 16:47:14 -08:00
Ryan Brandenburg b2340d327e Order IgnoreAntiforgeryTokenAttribute and add test 2016-12-12 14:55:36 -08:00
Pranav K cfa9631ce8 Resolve path traversals in RazorViewEngine
This change moves the onus of path resolution from individual IFileProvider instances to RazorViewEngine.

Fixes #5574
Fixes https://github.com/aspnet/MvcPrecompilation/issues/33
2016-12-08 11:20:06 -08:00
Joonas Westlin 1dd1d49321 Redirects with fragment (#5519)
- Added implementation of overloads where you can specify the fragment to redirect to.
- Added unit tests
- Added XML comments, including missing documentation of existing members
2016-12-06 10:32:01 -08:00
Doug Bunting 48546dbb28 Add more to `MvcCoreServiceCollectionExtensionsTest`
- 2nd half of #5554
- follow-on to #5540 PR
2016-12-05 20:05:24 -08:00
Ryan Brandenburg 8f8bf5af34 Seperate view and model for enum display 2016-11-30 11:13:38 -08:00
Pranav K 52ee9afc31 Adding PageActionDescriptorProvider
Fixes #5353
2016-11-23 16:53:06 -08:00
Pranav K 5b2a4aecb6 Make Microsoft.AspNetCore.Mvc.TestCommon a regular project
* This allows specifying all it's dependencies rather than for consuming projects to do this
* Remove unused APIs
* Fix weird downgrade warnings that show up due to P2P references
2016-11-23 16:23:56 -08:00
Steve Smith 34dd9472ba Comment typo (#5557) 2016-11-22 13:55:24 -08:00
Pranav K 296b12abc3 Pinning missed tools and dependencies 2016-11-18 12:41:45 -08:00
Pranav K 74c9194aee Pinning versions for 1.1.0 release 2016-11-18 12:12:52 -08:00
Pranav K 3b4d8e2e3d Fix downgrade warnings during restore 2016-11-17 10:50:47 -08:00
Pranav K 975dc212b7 Fix package versions 2016-11-17 10:19:48 -08:00
Pranav K c5a5ba1fee Add support for updateable ActionDescriptorCollection
Fixes #5350
2016-11-17 10:08:38 -08:00
Pranav K 177fb2a6b1 Temporarily disable running tests on Microsoft.AspNetCore.RazorPages.Test 2016-11-17 10:08:38 -08:00
Pranav K 29cd24f66b Add Microsoft.AspNetCore.Mvc.RazorPages projects 2016-11-17 10:08:38 -08:00
Pranav K 1506a44cd5 Fix downgrade warnings 2016-11-10 09:22:11 -08:00
Pranav K b82969a557 Updating versions to 1.2.0-* 2016-11-09 14:18:46 -08:00
Doug Bunting 6d4361218e Add builder extensions to simplify use of `CookieTempDataProvider`
- #5515
2016-11-08 15:32:09 -08:00
Jass Bagga 576c0e6a65 Throw an exception if configurationType to CreateConfigureDelegate is abstract/has no parameterless ctor
Addresses #5431
2016-11-08 14:16:03 -08:00
Kiran Challa 07a2f1de06 Fixes CookieTempDataProvider to set the secure attribute of a cookie only if a request is secure 2016-11-08 13:30:28 -08:00
Kiran Challa a3c06b00cc Fixes CookieTempDataProvider to handle empty request PathBase while setting cookie options 2016-11-08 13:30:27 -08:00
Marcus Schweda 24d5dfb552 Dynamic assembly checks to prevent NotSupprotedExceptions from System.Reflection.Emit
Fixes #5487
2016-11-07 12:49:49 -08:00
Jass Bagga 9caa688a30 Modified exception message for duplicate keys exception in CandidateResolver
Addresses #5289
2016-11-07 11:16:11 -08:00
Jass Bagga 304000095a Added logging for precompiled views in RazorViewEngine
Addresses #5462
2016-11-07 10:46:54 -08:00
Hugh Bellamy 1dc4b28bbe Add AcceptedAtActionResult tests 2016-11-07 09:53:19 -08:00
Kiran Challa 0cee00aae1 [Fixes #5352] When replacing Controller.Dispose with an explicit implementation the base Dispose is an action 2016-11-04 09:34:30 -07:00