Commit Graph

2516 Commits

Author SHA1 Message Date
Pranav K bf1fc7dab3 Reacting to Hosting changes 2016-03-15 10:50:53 -07:00
ryanbrandenburg 1ae1cdb10b * Remove ServiceProvider 2016-03-15 09:57:17 -07:00
Ajay Bhargav Baaskaran 73f9d26fb1 Updated Json.Net version 2016-03-14 15:05:35 -07:00
mnltejaswini 007c47d065 [Perf] Optimize controller action invoke
Fixes aspnet/MVC#3903
2016-03-14 10:17:55 -07:00
Pranav K 4f709bdbfd Fixing CI build break 2016-03-14 00:38:17 -07:00
Doug Bunting ffe2d2609a Correct HTML and JavaScript encoding of `<link>` and `<script>` attribute values
- #4083
- `<link>` tag helper did not HTML encode `href` values in fallback elements
- `<script>` tag helper did not correctly encode any attribute value in fallback elements
 - e.g. double quotes in literal strings would slip through
- only needed to change one existing unit test (!!); so added a bunch

nit: use `Process()`, not `ProcessAsync()` in `<script>` tag helper tests
2016-03-11 20:07:32 -08:00
ryanbrandenburg f1fa1bd8f4 * Remove JsonViewComponentResult 2016-03-11 11:40:54 -08:00
Brice Lambson 7b70da14bc Don't reference facades in NuSpec
These can be removed entirely after dotnet/cli#164
2016-03-10 14:07:45 -08:00
mnltejaswini 45a72a0e18 [Perf] Optimize creation of VDD
Fixes #3906
2016-03-10 13:39:01 -08:00
jacalvar 2b7a98a4d6 [Fixes #4152] Add HttpOptionsAttribute 2016-03-09 18:14:38 -08:00
jacalvar 6b369ef291 [Fixes #4102] DefaultHtmlGenerator should attempt to properly format values for `<input type="date">` and `<input type="time">` 2016-03-09 17:22:02 -08:00
Pranav K 78e53a22dd Remove extra dependencies that produce build warnings 2016-03-09 12:47:39 -08:00
Pranav K 6d3bd33c64 Revive DefaultRoslynCompilationServiceTest
Partially fixes #4140
2016-03-09 11:50:14 -08:00
Pranav K 501547d630 Remove IMvcRazorHost.MainClassPrefix 2016-03-09 11:50:07 -08:00
N. Taylor Mullen 5612ca845f React to aspnet/Razor#684.
- Modified `UrlResolutionTagHelper` to utilize new CSS selector attributes to restrict when it applies. It now only appies to tags that have their values starting with `~/`.
- `UrlResolutionTagHelper` no longer applies to dynamic content such as `href="@SomethingResultingInTildaSlash"`.
- Updated tests to reflect new behavior.
2016-03-08 12:17:16 -08:00
Pranav K 5a7267a83d Revive DefaultAssemblyProviderTests
Partial fix for https://github.com/aspnet/Mvc/issues/4140
2016-03-07 17:01:58 -08:00
mnltejaswini d537ec06cc [Perf] Using single UrlHelper per HttpContext and one StringBuilder per UrlHelper to reduce allocations 2016-03-07 13:48:54 -08:00
Ajay Bhargav Baaskaran ca164db921 [Fixes #4214] Moved IUrlHelper to Mvc.Abstractions 2016-03-04 16:45:47 -08:00
Pranav K 7bd7b32fcb Reacting to Localization CookieName change 2016-03-04 10:33:50 -08:00
Pranav K 3aa3799494 Rename ICanHasViewContext to IViewContextAware
Fixes #4073
2016-03-04 10:33:49 -08:00
Ryan Nowak 0b7035ddcf Implement MoveTo semantics in Mvc
- Simplify things that used to rely on HtmlTextWriter. This behavior is
  now the default.

- Simplify a whole mess of Razor TextWriter code.

- Integration test for merging of TagHelper buffers back into the 'main'
  buffer.
2016-03-04 07:54:31 -08:00
Ajay Bhargav Baaskaran e2fd41e416 Added Company, Copyright and Product attributes to AssemblyInfo 2016-03-03 17:33:48 -08:00
Doug Bunting d3c24637b1 Correct `Type.IsAssignableFrom()` polarity
- #3482
 - see new tests; many failed without fixes in the product code
 - add support for binding `IFormFileCollection` properties
 - make `FormFileModelBinder` / `HeaderModelBinder` collection handling consistent w/ `GenericModelBinder`++
  - see also dupe bug #4129 which describes some of the prior inconsistencies
  - add checks around creating collections and leaving non-top-level collections `null` (not empty)
 - move smarts down to `ModelBindingHelper.GetCompatibleCollection<T>()` (was `ConvertValuesToCollectionType<T>()`)
  - add `ModelBindingHelper.CanGetCompatibleCollection()`
  - add fallback for cases like `public IEnumerable<T> Property { get; set; } = new T[0];`
- #4193
 - allow `Exception`s while activating collections to propagate
- part of #4181
 - `CollectionModelBinder` no longer creates an instance to check if it can create an instance
 - not a complete fix since it still creates unnecessary intermediate lists

nits:
- correct a few existing test names since nothing is not the same as `ModelBindingResult.Failed()`
- remove a couple of unnecessary `return` statements
- correct stale "optimized" comments
- explicit `(string)`
2016-03-03 09:55:01 -08:00
Pranav K ac58e8433c Fix build break 2016-03-03 06:27:23 -08:00
Doug Bunting b35922e373 Remove project name from output path
- aspnet/Coherence-Signed#187
- remove `<RootNamespace>` settings but maintain other unique aspects e.g. `<DnxInvisibleContent ... />`
- in a few cases, standardize on VS version `14.0` and not something more specific
2016-03-02 14:39:12 -08:00
jacalvar 63e818b2fe [Fixes #4204] React to changes in Localization. 2016-03-02 14:36:54 -08:00
Pranav K e9b766fe80 Updated missed ifdefs in netstandard conversion 2016-03-01 16:03:05 -08:00
N. Taylor Mullen 33d1aea8ea Transition to Netstandard.
- dotnet5.X => netstandard1.y (where y = x-1).
- DNXCore50 => netstandardapp1.5.
- Applied the same changes to ifdefs.
2016-03-01 13:39:31 -08:00
jacalvar 12f33de92c Make ServiceCollectionExtensions consistent 2016-03-01 12:03:54 -08:00
Kiran Challa b7cde3e58f [Fixes #4043] Figure out ControllerModel.AttributeRoutes 2016-03-01 10:28:24 -08:00
Pranav K abafceab52 Revert "Updating to Roslyn beta1 packages"
This reverts commit 5ac7691f2e.
2016-02-29 09:41:16 -08:00
Pranav K 5ac7691f2e Updating to Roslyn beta1 packages 2016-02-29 06:59:03 -08:00
Pranav K 54bc9a7327 Update Microsoft.AspNetCore.Mvc.Dnx to target net451 2016-02-28 20:23:29 -08:00
Doug Bunting f889965929 Simplify `IsAssignableFrom()` use
- standardize on the `Type` extension method; less verbiage
- `ModelMetadata` had a redundant `IsAssignableFrom()` call
- `ModelBindingHelper.ValidateBindingContext()` over-engineered and used just once
 - do useful bit inline in `KeyValuePairModelBinder` but now a silent "does not apply" case
2016-02-26 21:30:00 -08:00
Shahriar Gholami 1e5b0b9bec Allow to define section or/and body without the need to render it 2016-02-26 18:02:19 -08:00
Pranav K 385c21fbe2 Add Microsoft.AspNetCore.Mvc.Dnx to allow using Mvc with DNX 2016-02-26 15:14:32 -08:00
Pranav K 756953fd50 Use the entry assembly when DependencyContext is null
Fixes #4136
2016-02-25 06:23:06 -08:00
Ajay Bhargav Baaskaran 028c0fb131 Enabled xml doc generation 2016-02-24 12:19:46 -08:00
Pranav K 0bf650a789 Use a fixed version of Roslyn to allow Coherence to succeed 2016-02-24 10:48:18 -08:00
Caleb Nelton 5b0b0b95a7 Small Refactorings
Use nameof
Replace with single call to SingleOrDefault
Replace with single call to FirstOrDefault
Simplify conditionals
2016-02-23 19:01:09 -08:00
Pranav K 80b6996701 * Moving DNX dependencies to test only
* Updating Mvc tests to use dotnet test to run on dnxcore50
2016-02-23 18:58:42 -08:00
Sebastien Ros c259f82615 [Fixes #4112 #4093] Adding support for custom SSL port
New optional MvcOptions.SslPort. If not defined the redirection uses an empty port (default),
otherwise the custom port is used.
2016-02-23 10:21:11 -08:00
Pranav K 5b805bb12d Updating to use cli
Fixes #3908
2016-02-22 17:49:51 -08:00
Ajay Bhargav Baaskaran df5eb0a15c [Fixes #4092] Using System.Buffers in JsonResultExecutor 2016-02-19 16:45:26 -08:00
Kiran Challa 4123d83d26 [Fixes #4047] SelectTagHelpers: asp-items shouldn't require/depend on asp-for. 2016-02-19 10:03:45 -08:00
Kiran Challa fd3ee49987 [Fixes #4085] Controller helper inconsistency: HttpNotFound(), Ok() 2016-02-19 09:25:04 -08:00
matt kocaj 75c05be2f7 removing redundant 'http' prefixes from helper methods. 2016-02-19 09:25:03 -08:00
Ryan Nowak b557ca55d9 Fix behavior of StartsWithPrefix
This undoes a behavior change introduced in
7b18d1d3f1.

The intent was to have ClearValidationState do the right thing for a case
where a collection was bound to the empty prefix, and then used again with
TryUpdateModel.

This change was implemented by saying that a key like "[0].Foo" is a match
for the prefix of "Foo". This isn't really right, and it's only
interesting for the ClearValidationState case.

The problem is that we don't know what the keys look like for a
collection. We can assume that they start with [0] but that's not really a
guarantee, it's a guess.

This change fixes the behavior of StartsWithModel, and move the
responsibility for this case back into ClearValidationState.

This change also removes the call to ClearValidationState from
TryUpdateModel. If you need this behavior, then call ClearValidationState
manually. Trying to bind and then re-bind a model object isn't really what
we intend.
2016-02-17 11:16:16 -08:00
Ajay Bhargav Baaskaran fd6d28d9eb Make AddControllersAsServices not overwrite existing IControllerTypeProvider 2016-02-17 10:14:31 -08:00
jacalvar 910f0139f9 [Fixes #4050] Throw an exception on CanRead/Write and GetSupportedContentTypes when the list of media types is empty 2016-02-16 17:16:16 -08:00
Kiran Challa 7337f50112 [Fixes #3774] DataAnnotation validation ignored 2016-02-16 08:52:50 -08:00
jacalvar ac23e5aec6 [Fixes #4013] Added support for areas in 'a' and 'form' tag helpers 2016-02-12 17:08:17 -08:00
jacalvar 65858b8d8b [Fixes #4051] Split OutputFormatter into OutputFormatter and TextOutputFormatter 2016-02-12 12:04:18 -08:00
jacalvar 63354e25a8 Make GetSupportedContentTypes on InputFormatter vitual 2016-02-12 10:57:36 -08:00
Ben Adams a33369acd8 Fast-path PrefixEnumerator 2016-02-12 09:06:14 -08:00
Ben Adams a493a9756e Simplify IsWhitespace 2016-02-10 17:34:20 -08:00
Ben Adams fd11d70fcd Less work on non-relative strings in UrlResolutionTagHelper 2016-02-10 17:34:19 -08:00
N. Taylor Mullen dca15c0a60 React to https://github.com/aspnet/Razor/pull/683 2016-02-10 16:53:33 -08:00
Ben Adams 6c2c777bdc Optimize StartsWithPrefix
-Remove double "equality" test in StartsWithPrefix
-Further StartsWithPrefix efficiencies
-Remove subkey allocation in StartsWithPrefix
2016-02-10 10:12:35 -08:00
Ryan Nowak dacebacb90 Optimize PrefixContainer
There's really no need for us to sanitize null. This code handles null
correctly. Additionally, CopyTo should be able to do better than our
hand-written foreach in the worst case, and avoids an enumerator
allocation.

Removed a custom implementation of IndexOfAny.
2016-02-10 09:48:29 -08:00
Ryan Nowak 698502df8c Rewrite MutableObjectModelBinder
A rewrite focused on simplifying extensibility points and reducing
allocations.
2016-02-10 09:48:05 -08:00
Chris R 4f8d1863d8 React to ISendFileFeature parameter name change. 2016-02-08 11:53:57 -08:00
Ryan Nowak 44834debeb Fix broken code path in antiforgery 2016-02-08 10:51:33 -08:00
Pranav K 7d1d7bc19c Reacting to CoreCLR package version changes 2016-02-08 09:33:48 -08:00
jacalvar fe639f028f [Fixes 3961] Consider InputFormatter behavior when we can't read the charset
* Broken InputFormatter into InputFormatter and TextInputFormatter
* Added an exception to ModelState inside ReadAsync on TextInputFormatter
  when we can't find a valid encoding to read the body.
2016-02-05 10:42:36 -08:00
N. Taylor Mullen 59334dcf17 React to aspnet/Razor#604 2016-02-04 16:37:30 -08:00
Ryan Nowak 9ea5a939cf Move Antiforgery.GetHtml() to MVC as an extension 2016-02-04 13:08:38 -08:00
Ryan Nowak 063bc1f8e8 Replace comparer with a bespoke BinarySearch 2016-02-04 11:25:34 -08:00
jacalvar 1a87f6d91a [Fixes #3915] Update FormFileModelBinder to avoid re-parsing the ContentDisposition header 2016-02-04 11:17:11 -08:00
Ajay Bhargav Baaskaran 6de171f1ef [Fixes #3904] Redesigned IValueProviderFactory and renamed a few methods 2016-02-03 11:31:05 -08:00
N. Taylor Mullen acd88d08ba Enable invoking a `ViewComponent` without arguments inside of a controller.
- Also updated doc comments to properly reflect `ViewComponent` `arguments` parameter.
2016-02-03 10:30:02 -08:00
Kiran Challa bf93c7d7a4 Removed JavaScriptEncoder property from HtmlHelper 2016-02-02 16:52:13 -08:00
N. Taylor Mullen 096007b394 Updated `Controller`s `ViewComponent` method to handle arguments.
- This bit was missed when changing the `ViewComponent` invocation pattern resulting in the inability to invoke `ViewComponent`s with arguments in a `Controller`.

#4004
2016-02-02 15:42:23 -08:00
Cesar Blum Silveira 50fc0bb140 Reference Microsoft.NETCore.Platforms where necessary. 2016-02-02 14:22:07 -08:00
Louis DeJardin c116a38c87 Reducing ModelBindingContext allocations
Closes #4007, Fixes #3622, Fixes #3621

Squashed commit of the following:

commit 4b3095671d945ae79baa4fc4ba22a2ce5ebe488e
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 15:05:58 2016 -0800

    PR Feedback #4007

    ModelBindingContext.ModelType. Need similar changes a couple of
    other places in this class.

commit 7c45847d1d4c3eb02c48710bb4f100d4d1305385
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 15:01:13 2016 -0800

    PR Feedback #4007

    Please clean out the now-extra added usings for System.Diagnostics.

commit 13263fb29a0a12b472eab130eafe6760f6279262
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 14:58:52 2016 -0800

    PR Feedback #4007

    Confusing to read: How can overallResult be non-null here?

commit dfb52e1bd48397580eacf87be3541b159dbe79f1
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 14:47:28 2016 -0800

    PR Feedback #4007

    End these new guys with a period.

commit f4c745a0a805b960234cd4d810378bc40b8e5c8c
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 14:44:10 2016 -0800

    Fixing unit tests

    Also fixes rebase error in CancellationTokenModelBinder

commit f3874cc27388552e863d99d8e6631a2901f8e000
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 13:01:02 2016 -0800

    PR Feedback #4007

    Remove commented-out code.

commit 44ec1a5a3bd4fdeb4d1c4de9f0b402ff0fd34ffe
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 12:22:04 2016 -0800

    PR Feedback #4007

    Why now public?

commit 9aa45eda42ec9b11b7e6b73a14e887f1be8cb130
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Mon Feb 1 12:18:19 2016 -0800

    PR Feedback #4007

    Leave out .Test

commit 58d32d809797d25cc9b5b4c0516ae9e5992fa66e
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 15:41:14 2016 -0800

    PR Feedback #4007

    By making this async, we've undone an optimization here.
    Notice BindModelAync now has a state machine.

commit f7503228b77803b786c19e06e60f618f6f5e15c5
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 15:30:54 2016 -0800

    PR Feedback #4007

    Don't need extra line

commit cf26f3e5125792d6af0ca2afda672e241fe0e164
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 15:28:23 2016 -0800

    PR Feedback #4007

    No longer need most of the using System.Diagnostics additions

commit e90c40c4e4315462efc9ade1585e2e8c085588a4
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 15:12:50 2016 -0800

    PR Feedback #4007

    Suggest Microsoft.AspNetCore.Mvc.Internal.

commit 5360599e9c09ab97b8136977ee0917fd88f51f76
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 14:57:28 2016 -0800

    PR Feedback #4007

    Remove this line.

commit ce63edba51721412684a54886109e6b2225c6c99
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 14:14:02 2016 -0800

    PR Feedback #4007

    incorrect mentions of DefaultModelBindingContext in doc comments

commit bbc738ca2304243839e8d68615ff4bbf14f3279c
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 13:59:50 2016 -0800

    PR Feedback #4007

    Could we convert most of these setups to avoid the
    "async but not await" mess?

commit 0827e6917481e3fafb2905a3fa93cf90afb9be40
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Fri Jan 29 11:02:00 2016 -0800

    PR Feedback #4007

    remove the file

commit 3dd0d10d7f16c94df5f6d34ecb5f2efda62bccd8
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 13:34:31 2016 -0800

    Revert "PR Feedback"

    This reverts commit 589d3e65d406b127a0b833d86c05ad4a8c5172c8.

    It seems the assignment of these properties is not appropriate
    in both cases.

commit c8a97ada63fa16ee7df6c165031bf15b1c23e8a2
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 12:37:18 2016 -0800

    PR Feedback

    DefaultModelBindingContext should not be in Abstractions

commit 5e3b6a1486283f45867830693d4fd23cc967f06f
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 12:35:28 2016 -0800

    PR Feedback

    Is it still needed and, if so, where does the problem lie?

commit 44635a75af05034863f0d4b80b2eb857d43766b2
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 11:06:26 2016 -0800

    PR Feedback

    * this is either supported (shouldn't assert) or not supported (should throw). I don't feel like these asserts add much value
    * this isn't something that should throw

commit 648975cad14ac5e3738ea454c490ca221f650155
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 10:54:28 2016 -0800

    PR Feedback

    remove the other static constructors for Task<ModelBindingResult>
    they don't have a purpose anymore

commit d0e15211530668ec21406121342715b0d0f606a6
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 10:51:24 2016 -0800

    PR Feedback

    the reason for the separation was to put the implementation somewhere else

commit 2caf88df7a37664db829d660cbb5266cf6871f2c
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 10:48:25 2016 -0800

    PR Feedback

    * coding standards...
    * yea
    * private readonly

commit 6c2c640611686a554a8c417a407fe169c45a690e
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 10:46:12 2016 -0800

    PR Feedback

    * disposable -> <see cref="ModelBindingContextDisposable"/>
    * Fill in the blanks.

commit df07891c798627ac9c8fce6a7598d9386e979615
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 10:44:07 2016 -0800

    PR Feedback

    Value to assign to the ... for modelName and model as well.

commit 8e9ade7378577eddc0ba8e939deafe8d12781b8a
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 28 10:43:50 2016 -0800

    PR Feedback

    Should this just be an abstract class rather than an interface?

commit a66685e2470a84b0acbf4e797eff5010a1a066ab
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 23:47:44 2016 -0800

    PR Feedback

    Suggest resetting FallbackToEmptyPrefix for current context as part
    of PushContext().

commit d85e66f59d24e0959652f1683cb94c4b513d75c0
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 23:34:42 2016 -0800

    PR Feedback

    Add a using for the Internal namespace.

commit bef09536f881d400f15a83b7788c828903679a38
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 23:27:30 2016 -0800

    PR Feedback

    needs lots of /// doc love and blank lines

commit 4173488112f2889d662d5a7c55f249aefa821c22
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 23:06:49 2016 -0800

    PR Feedback

    Temp file accidentally added. Oops.

commit 6790d6104d5bd72ce7eab270bfe9a360cacf74f2
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 23:04:40 2016 -0800

    PR Feedback

    please remove the else bits after returns

commit 8d077ee27109133d18c5cddfe3b9b6c6e9a40e0e
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 22:57:38 2016 -0800

    PR Feedback

    The code at one point matched the comment -- always returning
    something other than NoResult. Likely the comment needs
    to change.

commit 0ea6c2186212444f46c7a48394b86b14190a9026
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 22:50:02 2016 -0800

    PR Feedback

    Don't recall why this was virtual but why remove that?

commit 0b27f3e62df6836e6e8751967c47c6192c3eec9a
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 22:35:57 2016 -0800

    PR Feedback

    No need for this line; just asserted that Result is already null.

commit c85648bb680bdbdb33381cd1af91133d04d56592
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 22:34:26 2016 -0800

    PR Feedback

    Comment needs some love since NoResult is no more.

commit a606cf32386de9e4566a678b34a195cc0720211a
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 22:18:55 2016 -0800

    PR Feedback

    * Long enough to start wrapping this. Same for a few other properties
      in this class.
    * Why is this check debug-only?
    * /// docs and some blank lines between members

commit 7efce5675a78350a4a7fde4b54fcb7886fe18252
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 20:29:50 2016 -0800

    PR Feedback

    Why not use the Task helper used elsewhere?

commit eb5fe6f95a463eb2f162f51649ffea57db87e286
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 20:28:31 2016 -0800

    PR Feedback

    Sort usings

commit df3bd00c4b59d2434e3a7be28e637d3c8008ae32
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 20:27:38 2016 -0800

    PR Feedback

    Dead code

commit fe7ec17fbb5209f2904f067ec1f91169ab05fb33
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 20:26:04 2016 -0800

    PR Feedback

    Putting internal back in place

commit 496f1f97ac48b2e95572dd6d463ced3366f8d36c
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 20:21:03 2016 -0800

    PR Feedback

    stylecop 13040: Move these to the top of the file.

commit cd003d0bca6516a907a0ae889d2e6130ff473b57
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Wed Jan 27 19:38:15 2016 -0800

    Renames to asp.net core

commit e1cf523119084e35b70f11f67f64f651c39e1c8b
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Jan 21 21:21:44 2016 -0800

    Removing NoResult and fixing tests

commit 5af6223a4d60b6c4139c1fc62ebf297ab0e5454f
Author: Louis DeJardin <lodejard@microsoft.com>
Date:   Thu Dec 17 11:49:08 2015 -0800

    Reducing ModelBindingContext allocations
2016-02-02 12:10:43 -08:00
ryanbrandenburg 2aca8810d3 * Give message correct path. 2016-02-02 11:08:41 -08:00
Ryan Nowak d1fdc22b9b Reduce allocations in FormContext 2016-02-01 14:27:20 -08:00
Ryan Nowak 1142c7dfc0 Be smarter about stringbuilder usage 2016-02-01 11:26:19 -08:00
Ryan Nowak faba95287e Fix for #3743 - CancellationToken validation
This is a fix for the specific case reported in #3743 and also a few
related cases where the object being validated does not come from user
input.

Because the CancellationToken is bound using the 'empty prefix',
suppressing validation causes the validation system to suppress ALL keys
in the MSD. This will wipe out validation info for other, unrelated model
data. The same can occur for [FromServices], IFormCollection, IFormFile,
and HttpRequestMessage (anythere when MSD key == null and
SuppressValidation == true).

The other change here is related to the [FromBody]. We don't want to
create an entry in the model state for a 'valid' model with the empty
prefix. This can cause the system to miss validation errors. If you end up
in a situation where there's an entry with the empty prefix for an invalid
state, you won't accidentally miss validation errors.
2016-01-29 18:12:19 -08:00
Ajay Bhargav Baaskaran aeba565e53 Fixing ArgumentOutOfRangeException in ExpressionRewriter 2016-01-29 14:47:09 -08:00
Cesar Blum Silveira b404d5c3de React to StringTokenizer changes. 2016-01-29 13:42:36 -08:00
Doug Bunting 26a14a25ab Support overrides for client-side validation messages
- #2969
- `RemoteAttribute` did not support `IStringLocalizer` overrides
 - use same `MvcDataAnnotationsLocalizationOptions` property as for other `ValidationAttribute`s
- error message `NumericClientModelValidator` added could not be overridden
 - not related to `IStringLocalizer` because users have no way to set the resource lookup key
 - extend `IModelBindingMessageProvider` to add the necessary `Func<,>`
- also correct problem using resources with `RemoteAttribute` and add lots of tests
2016-01-29 11:23:57 -08:00
Ajay Bhargav Baaskaran d6843b5a9d Fixed bad xml documentation 2016-01-29 10:58:43 -08:00
Ajay Bhargav Baaskaran 47351aac7a Added caching for client model validators 2016-01-29 10:40:41 -08:00
jacalvar 7cbb263edb [Fixes #3874] Null passed as arguments to controller method parameters when no InputFormatter matches
* Add an UnsupportedContentType to the ModelState dictionary when no formatter can read the body.
* Add a filter to the pipeline that searches for that specific exception and transforms the response into 415.
2016-01-28 15:46:17 -08:00
Derek Gray 8b726ddc0c Allow the use of the Prompt property of DisplayAttribute for the placeholder attribute of input fields (addresses #3723) 2016-01-27 16:18:23 -08:00
ryanbrandenburg 78e7179221 * Remove HttpRespomseStreamWriter 2016-01-27 16:04:54 -08:00
Brennan 3cac63a9cf React to Logging API changes 2016-01-27 12:37:35 -08:00
Ryan Nowak 1a70f12bf8 Undesign client validation
This change removes a layer of abstraction. These validators now just do
what they do now without creating a bunch of intermediate objects.

ModelClientValidationRule has been removed, and client validations
manipulate the attributes collection of a tag directly.
2016-01-27 09:55:18 -08:00
Ajay Bhargav Baaskaran 8c4bcf14c7 Added caching for validators 2016-01-26 17:15:16 -08:00
jacalvar 71a815be50 [Fixes #3979] AuthorizationContext conflicts with type in Microsoft.AspNet.Authorization 2016-01-26 16:27:40 -08:00
jacalvar 357f4a00b7 [Fixes #3952] ViewComponentDescriptor.Type should be a TypeInfo instance instead of a Type instance 2016-01-26 16:01:58 -08:00
jacalvar 354400f12b [Fixes #3752] Refactor and cleanup view components
* Moved instantiation of view components into DefaultViewComponentActivator
* Introduced IViewComponentFactory to handling setup of new view component instances.
* Added a release method on IViewComponentActivator for handling tear down of view
  component instances.
2016-01-26 14:18:12 -08:00
jacalvar 2b0bea675e [Fixes #3752] Cleanup Controller invocation pipeline
* Added a Release method to IControllerActivator
* Changed Create in IControllerActivator to take in a ControllerActionContext
* Move the check to determine if a controller can be instantiated into the controller activator.
* Move logic for disposing controllers into the controller activator and make release on the
  controller factory delegate into the activator.
* Changed release methods to take in a controller context.
2016-01-26 14:15:03 -08:00
Pavel Krymets 79eb0138c7 Migrate to using System.Runtime.Loader.AssemblyLoadContext 2016-01-26 10:22:25 -08:00
Pranav K f9ad93c8a5 Fixing XML docs 2016-01-25 16:08:04 -08:00
N. Taylor Mullen 1f77aa445a Fix XML docs to pass xml-docs-test. 2016-01-25 14:55:42 -08:00
Ryan Nowak 434da683fc Improve buffering of Razor output in MVC
These changes are aimed at significantly improving the performance of
MVC/Razor when a large amount of content is in play or a large number of
TagHelpers are used.

A few issues addressed:

- Buffer sync writes after a flush has occurred so that we can write them
  asyncronously. The issue is that an IHtmlContent can only do sync
  writes. This is very bad for Kestrel in general. Doing these writes
  async is better for our overall perf, and the buffer that we use for it
  is from the pool.

- 'Flatten' ViewBuffers when possible. A page with lots of TagHelpers can
  end up renting a ViewBuffer and only write 2-3 things into it. When a
  ViewBuffer sees another ViewBuffer we can either steal its pages, or
  copy data out and 'return' its pages. This lets us use 3-4 buffers for a
  large Razor page instead of hundreds.
2016-01-25 12:40:52 -08:00
Pranav K 43b65ca46c Update the documentation for IViewComponentHelper.InvokeAsync
Fixes #3974
2016-01-25 12:05:28 -08:00
Ryan Nowak 8b1bd343ba Internal cleanup in ViewFeatures 2016-01-24 22:13:29 -08:00
Ryan Nowak de3b33caf1 Internal cleanup in Razor 2016-01-24 21:50:33 -08:00
Ryan Nowak a276169693 Reorganize logging, move more types to internal 2016-01-24 17:24:34 -08:00
N. Taylor Mullen 72d1c49575 Update missing AspNetCore referrences. 2016-01-22 16:48:47 -08:00
N. Taylor Mullen 25eb50120e Update ASP.NET 5 versions for ASP.NET Core.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:40:26 -08:00
N. Taylor Mullen 3be7fbdf9f Rename AspNet 5 file contents.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:18:33 -08:00
N. Taylor Mullen 6a6c8ca544 Rename AspNet 5 folders and files.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:17:07 -08:00
Brennan 8765a06b69 React to Fileprovider namespace changes 2016-01-21 17:45:06 -08:00
Ajay Bhargav Baaskaran a47a7fdccc Added caching for ActionConstraints 2016-01-21 17:30:08 -08:00
Ajay Bhargav Baaskaran f0777b95a8 [Fixes #3868] Exclude Antiforgery token in form with method Get 2016-01-21 11:29:41 -08:00
Ryan Nowak dd952d8d70 Move some types to .Internal namespace 2016-01-21 10:56:38 -08:00
Kristian Hellang 6737a1f243 Adding params overloads for AddControllersAsServices
- Moved null checks
- Tweaked XML docs
2016-01-21 10:26:38 -08:00
Doug Bunting 04453a2b4f Support user overrides of three more framework-provided `ModelState`-related messages
- #3215
- add new accessor properties to `IModelBindingMessageProvider` and plumb them through
  - use in `ModelStateDictionary` when handling a `FormatException` or `OverflowException`
  - use in `ValidationHelpers` when handling a `ModelError` with `null` `ErrorMessage`
- add new `ModelExplorer` parameter to `IHtmlGenerator.GenerateValidationMessage()`
  - plumb through to `ValidationHelpers.GetModelErrorMessageOrDefault()`

Started from work @kichalla did on the `kiran/movemessages-to-messageprovider` branch in #3775.

nits:
- use helper methods more consistently in `HtmlHelper<T>`; slightly improves error checking
- remove unused `Resources` class from `Microsoft.AspNet.Mvc`
- make `ValidationHelpers` class `public`; already in `.Internal` namespace
  - split `GetUserErrorMessageOrDefault()` in two; rename to `GetModelErrorMessageOrDefault()`
- fix some #YOLO wrapping
2016-01-20 21:14:33 -08:00
Pranav K 1144fc0e6c React to System.Runtime.Loader TFM changes 2016-01-20 16:02:10 -08:00
Derek Gray 328f4d648b Allow ValidationAttributes and IValidatableObjects to resolve services from the RequestServices provider by injecting it into the ValidationContext. 2016-01-20 09:19:24 -08:00
ryanbrandenburg a229b20c48 * StringOutput set proper ContentType 2016-01-19 10:06:30 -08:00
Doug Bunting 2810858905 Add `HtmlEncoder` parameter to `RazorPage.StartTagHelperWritingScope()`
- aspnet/Razor#643 part 2: react to aspnet/Razor#653
 - change test calls and delegates to include new parameter
 - add tests specifically of the new feature
 - add tag helpers using new feature to `TagHelpersTest` functional test
- note `HtmlEncoder`s used elsewhere e.g. in other `RazorPage` instances are unaffected
 - i.e. changing one `RazorPage.HtmlEncoder` property only affects C# expressions in that page

Also simplify scope management, removing bizarre assertion when user does something odd.

nits:
- correct `// Act` and `//  Act & Assert` content
- remove #YOLO wrapping
2016-01-17 22:59:59 -08:00
Pranav K 2baafc3699 Specify Newtonsoft.Json version to ViewFeatures to sort out disambiguity. 2016-01-15 16:13:32 -08:00
Pranav K cf9221df07 Pool JsonSerializer instances
Fixes #3550
2016-01-15 16:13:31 -08:00
Doug Bunting fa8c2eac3e Check encoded and unencoded values against element body in `OptionTagHelper`
- #3386
- initialize comparison `HashSet` with unencoded values to ensure both are checked
- address perf and correctness issues in this code
  - `context.Items[typeof(SelectTagHelper)]` entry read as `ICollection` but written as `IReadOnlyCollection`
    - `IReadOnlyCollection` worse because it does not include `Contains()`, causing Linq use
  - every `<option>` element recalculated the encoded values and created a `HashSet` to contain them
    - add `CurrentValues` type to cache this `HashSet` in `context.Items`
  - each `OptionTagHelper` created the additional `HashSet` even if `Value` was bound
2016-01-14 17:46:54 -08:00
jacalvar 82381d97c2 [Fixes #3907] Improve MVC error when MVC services aren't registered 2016-01-14 15:09:07 -08:00
Pranav K c7f6ed4445 Removing Newtonsoft.Json dependency from Microsoft.AspNet.Mvc.Formatters.Json 2016-01-14 14:40:52 -08:00
Ajay Bhargav Baaskaran 30ddf9b969 Updated missed TimestampToTicks changes 2016-01-14 12:42:31 -08:00
Ben Adams 63a7d50dd1 Invert TimestampToTicks division 2016-01-14 12:20:59 -08:00
Pranav K 13c7e68fa7 Fix incorrect xml docs for RoslynCompilationService
Fixes #3384
2016-01-14 12:15:48 -08:00
Pranav K 200fb23ba5 Reduce allocations in GlobbingUrlBuilder 2016-01-14 12:15:41 -08:00
Pranav K e078259547 Modify UrlHelper to use a single StringBuilder 2016-01-14 10:39:35 -08:00
Pranav K aa5a4d4af2 Revert "Revert DependencyContext changes untill dotnet-cli packages get sorted out"
This reverts commit 57bf12311b.
2016-01-13 16:24:33 -08:00
Ryan Nowak 420f442487 Fixes #3818 - Support Consumes in ApiExplorer
This change adds a list of ApiRequestFormat objects to ApiDescription
object which include the content type and formatter for each supported
content type which can be understood by the action.

Computation is aware of the [Consumes] attribute via the
IApiRequestMetadataProvider metadata interface, and aware of Input
Formatters via the new IApiRequestFormatMetadataProvider interface.

This algorithm is essentially the same as what we do for
produces/output-formatters. We iterate the filters and ask them what
content types they think are supported. Then we cross check that list with
the formatters, and ask them which from that list are supported. If no
[Consumes] filters are used, the formatters will include everything they
support by default.

This feature and data is only available when an action has a [FromBody]
parameter, which will naturally exclude actions that handle GET or DELETE
and don't process the body.
2016-01-13 12:32:17 -08:00
Ryan Nowak 70cee90186 Add optional filter caching 2016-01-13 09:11:08 -08:00
javiercn 6ba05add3f [Fixes #3230] Remove use of reflection in MutableObjectModelBinder 2016-01-12 15:52:27 -08:00
jacalvar 1ca25c48af Fix warning in documentation due to mising using 2016-01-12 15:45:34 -08:00
javiercn 2063356f24 [Fixes #3683] Replace implementations in MediaTypeComparisons and
MediaTypeEncodings with memory efficient implementations using a MediaType
struct.
2016-01-12 15:09:48 -08:00
javiercn 739f83a978 Support caching of the Content-Type string used by OutputFormatter
when the encoding is Utf-8.
2016-01-12 15:09:46 -08:00
jacalvar 830fd410f5 Remove runtime dependency usage of MediaTypeHeaderValue.
Removes usage of MediaTypeHeaderValue in ApiExplorer, InputFormatters and
OutputFormatters

Public interface changes with stub implementation.
2016-01-12 15:09:46 -08:00
Pranav K 32d15186a0 Remove Razor precompilation 2016-01-12 14:51:33 -08:00
Steve Gordon d0046cafe9 Fixing minor error with comment 2016-01-12 12:11:17 -08:00
Ryan Nowak ddce8a4dbc Fix incorrect usage of flush on encoder 2016-01-11 13:08:58 -08:00
Pranav K b118aa95c5 Remove use of `String.Split` in Environment taghelper
Fixes #3617
2016-01-11 09:41:21 -08:00
Ryan Nowak 2eb6cd655b Write our ViewBuffer values asynchronously 2016-01-08 17:12:27 -08:00
Pavel Krymets 57bf12311b Revert DependencyContext changes untill dotnet-cli packages get sorted out 2016-01-08 15:59:53 -08:00
Pavel Krymets b5c48de651 Forgotten files 2016-01-08 14:51:21 -08:00
Pavel Krymets 566790577d Add dependency context fallback to razor view compilation 2016-01-08 13:43:52 -08:00
Ajay Bhargav Baaskaran 0bb772a815 [Fixes #3755] Added logging for view compilation 2016-01-08 11:58:09 -08:00
Ajay Bhargav Baaskaran bf1fcf6b56 Return BadRequest response when antiforgery token validation fails 2016-01-08 10:35:00 -08:00
John Luo c0800bea9f Remove redundant AddOptions which is now a default hosting service 2016-01-07 18:46:10 -08:00
Ryan Nowak c304984a8d Fix #3501 - Issues with Flush
Calling Flush[Async]() on the writer will NOT flush the stream.
Calling Flush[Async]() in Razor will flush both the writer and the stream.

Our normal flow will be to flush the writer, but not the stream. This
avoids chunking, but allows us to do a WriteAsync on the stream as part of
the call to FlushAsync. This is done to avoid a synchronous write due to
Dispose calling Flush on the writer, which needs to call Write on the
stream.

See issue for extensive background.
2016-01-07 14:52:22 -08:00
Ryan Nowak 676bde29b9 Make Begin[Route]Form include antiforgery 2016-01-07 13:24:01 -08:00
N. Taylor Mullen 2b83dbb52e Make `ExpressionRewriter` more resilient to unconvertible types.
#3825
2016-01-07 11:41:14 -08:00
Pranav K dc878f2777 Capture exceptions thrown during compilation
Fixes #3870
2016-01-07 11:21:45 -08:00
Ryan Nowak ff00c07b85 Rename ActionDescriptorsCollection
ActionDescriptorsCollection -> ActionDescriptorCollection
2016-01-07 10:26:12 -08:00
Pranav K 9168cd1f37 Optimize allocations in Script/Link TagHelpers
Fixes #3618
2016-01-07 09:56:24 -08:00
Ryan Nowak a500a93dfb Smarter antiforgery
Adds the concept of an IAntiforgeryPolicy marker interface as well as
the ability to overide policy with a 'closer' filter.

Adds a new [IgnoreAntiforgeryToken] attribute for overriding a scoped
antiforgery policy.

Adds a new [AutoValidateAntiforgeryToken] attribute (good name tbd) for
applying an application-wide antiforgery token. The idea is that you can
configure this as a global filter if your site is acting as a pure
browser-based or 1st party SPA. This new attribute only validates the
token for unsafe HTTP methods, so you can apply it broadly.
2016-01-05 17:24:33 -08:00
Pranav K 0a2b6205c9 Reacting to Routing changes 2016-01-05 12:05:20 -08:00
Ryan Nowak 7f38773531 React to breaking change in routing 2016-01-05 11:49:44 -08:00
Ryan Nowak 4141fcae69 Optimize MvcRouteHandler
- Check MVC services once at startup
- Make action selector sync

We've never really had a scenario for the action selector being async, it
just ended up that way. None of our extensibility here lets you do
anything async without replacing it wholesale, which we don't
recommend.
2016-01-05 11:31:43 -08:00
Ben Adams c125b4e59b Correct and more accurate timestamp
As per https://github.com/aspnet/Hosting/pull/543
Resolves  #3849
2016-01-05 10:21:06 -08:00
Ajay Bhargav Baaskaran 47a3aee2c1 [Fixes #3361] Changed the value provider preference to be backwards compatible 2016-01-04 12:55:35 -08:00
Ajay Bhargav Baaskaran 1f87442092 [Fixes #3749] Expose ActionContext on IUrlHelper 2016-01-04 10:33:42 -08:00
Ajay Bhargav Baaskaran dc968bc1bf [Fixes #3779] Using explicit StringComparison in startswith 2016-01-04 10:23:01 -08:00
David Fowler ba5fe60cf5 Revert "Change PhysicalFileResult and VirtualFileResult to use SendFileAsync"
This reverts commit 5aa2e06305.
2015-12-31 16:17:53 -08:00
David Fowler 5aa2e06305 Change PhysicalFileResult and VirtualFileResult to use SendFileAsync
- SendFileAsync does the proper fallback to stream copy when the feature
isn't available. Take advantage of it in MVC. There are plans to use the
buffer pool as part of the stream copy so MVC will get that benefit for
free.
- Left CopyToAsync in SendFileAsync when the file doesn't have a
physical path
2015-12-31 15:28:50 -08:00
Pranav K 2f66c041fd Remove long form Dispose
Fixes #3834
2015-12-31 13:52:21 -08:00
Pranav K 7d5a68b9ae Reacting to IHtmlContentBuilder changes 2015-12-31 11:52:26 -08:00
Kiran Challa 7a955bcbc0 FormatFilter overrides content type set explicitly by the developer 2015-12-30 13:20:56 -08:00
Pranav K aab051a20f Rename DictionaryBasedValueProvider to RouteValueProvider
Fixes #3629
2015-12-29 18:51:47 -08:00
Pranav K 2b9dd76535 Make RazorViewEngineOptions.FileProvider a list instead of a single item
Fixes #3806
2015-12-29 14:47:15 -08:00
Ryan Nowak d222900662 Optimize allocations in argument binder
This change avoids a state machine allocation and a dictionary allocation
on the common case (no bound properties). Ugly? You bet. Worth it? Yeah,
seems worthwhile.

This is worth about 200 bytes/request - about 3% of allocated bytes in a
smallish API scenario.
2015-12-29 09:26:59 -08:00
Ryan Nowak 0a9804056e Use System.Buffers for JSON.NET 2015-12-29 08:26:55 -08:00
Pranav K 1a8d20fee5 Optimize allocations in UrlResolutionTagHelper
Fixes #3534
2015-12-28 18:07:13 -08:00
Ryan Nowak 85a4c7edc5 React to changes in routing 2015-12-28 10:15:50 -08:00
Ryan Nowak 67b9414ccf Fix IModelBinder docs 2015-12-28 08:56:48 -08:00
Pranav K 43226fe54d Modify FileVersionProvider to cache missing file info.
Fixes #3765
2015-12-23 14:32:39 -08:00
Pranav K 399e516065 Modify IViewComponentHelper to remove method selection ambiguity.
Fixes #612
2015-12-23 10:02:51 -08:00
damianedwards ce0e35ff75 Make ViewLocalizer base name generation more efficient:
- Because @pranavkm made me do it
- And it is actually faster and less allocating than the old code (~25% faster)
- Added some more test cases
2015-12-21 16:25:35 -08:00
Hao Kung 0e8113e393 OptionsModel => Options rename 2015-12-21 15:00:31 -08:00
damianedwards 1529c868f2 Improve ViewLocalizer resource look-up semantics:
- Always prepend with application name and let underlying `IStringLocalizerFactory` do the name gymnastics
- Use ExecutingFilePath instead of view name
- Trim off the file extension (so your resource doesn't have to have ".cshtml" in its name)
- Improved doc comments
- Added tests to cover ViewLocalizer behavior
- #3718
- #2767
2015-12-21 14:22:32 -08:00
Kiran Challa d77655fb73 MVC Controller Response - Wrong ContentType #3245 2015-12-21 11:25:45 -08:00
Ryan Nowak 8fb187bf09 Use system.buffers for our reader/writer 2015-12-18 09:27:36 -08:00
Pranav K 5f66403248 Remove TextWriter.ToString from RazorPage
Fixes #3668
2015-12-18 09:12:28 -08:00
Pranav K c5b6efd6bf Move buffer types to ViewFeatures
Use buffer pooling in more places
2015-12-17 21:05:18 -08:00
damianedwards 0c3e7b5a75 Improve usability of IHtmlLocalizer & associated API:
- IHtmlLocalizer no longer derives from IStringLocalizer
- IHtmlLocalizer indexer now returns LocalizedHtmlString
- IHtmlLocalizer has GetString methods now that act the same as IStringLocalizer.GetString
- Made LocalizedHtmlString a struct to match LocalizedString
- Updated samples in response to aspnet/Localization#167
- Rename "ancestor" to "parent" for loc API
- Fixes some doc comments
- Fixed tests
- #3716
2015-12-17 16:35:19 -08:00
Pranav K 0720d23a19 More reactions to DI 2015-12-17 14:11:58 -08:00
N. Taylor Mullen 2b77744f96 React to aspnet/Razor#630.
- `TagHelperDescriptorFactory` is no longer static.
2015-12-17 12:13:52 -08:00
Pranav K a036ff4738 Reacting to DI changes 2015-12-17 12:03:29 -08:00
Doug Bunting 3d8225502f Change `HtmlString` to inherit from `HtmlEncodedString`
- part of aspnet/HtmlAbstractions#5 fix
- also extend existing special cases to more general `HtmlEncodedString`
2015-12-16 12:42:13 -08:00
Ajay Bhargav Baaskaran 232b27ad5d [Fixes #3430] Removed RouteKeyHandling.CatchAll 2015-12-16 11:57:22 -08:00
Pranav K 7c40759e32 Reacting to Routing changes 2015-12-16 11:49:20 -08:00
javiercn c61cc65db3 [Fixes #3705] Bring back render partial 2015-12-15 12:20:06 -08:00
Ajay Bhargav Baaskaran bbba9dcde6 [Fixes #3524] Handle negative long values in TempData correctly 2015-12-15 00:17:37 -08:00
Doug Bunting 1b7e67211f Do not override default `Layout` value
- #3745
2015-12-14 19:09:57 -08:00
N. Taylor Mullen 29ea696c5a Add `Model` assessor to `ViewResult` for MVC5 portability.
#3495
2015-12-14 16:16:41 -08:00
Ryan Nowak 1126d47b3e React to breaking changes in RouteBuilder 2015-12-14 14:40:38 -08:00
Ryan Nowak a2393f21be Adds ControllerBase to Mvc.Core
This change adds a base class for controllers to Mvc.Core that can be used
without a dependency on views, json, etc.

Most of the functionality on Controller moves to ControllerBase. I kept
the IActionFilter and IDisposable functionality on Controller since it's
not really a fit with the 'minimal' philosophy.
2015-12-14 10:29:55 -08:00
Ryan Nowak ad3c460500 React to breaking in IRouteConstraint 2015-12-14 10:08:09 -08:00
Ryan Nowak ee6ef3f25f Last part of #3676
Uses the correct IEnumerable<> in validation strategies
2015-12-14 08:52:44 -08:00
ryanbrandenburg 3393ba43c2 * Parameters into the messages 2015-12-11 12:05:44 -08:00
Ryan Nowak ed93a6c812 React to routing breaking changes 2015-12-11 09:30:51 -08:00
Kiran Challa f2bb90fa55 Fix localization tests 2015-12-10 22:37:20 -08:00
Ryan Nowak 96de1dbe4b Remove IExcludeTypeFilter
- Removes IExcludeTypeFilter
- Replaced with a property 'ValidateChildren' on ModelMetadata
- Teach ValidationVisitor to respect 'ValidateChildren' for enumerable
  types.
2015-12-09 12:30:13 -08:00
Sebastien Ros 774ee05508 Clean up ViewStartPages usage in RazorView
Fixes #3682
2015-12-09 10:55:59 -08:00
Ryan Nowak cf6662d0c3 Partial fix for #3676 - fix race in ElementMetadata
The accessor for ElementMetadata can sometimes return null when
concurrently accessed.

This change solves this issue and simplified a bunch of lazy-computed
properties, by precomputing all type-related facets of ModelMetadata.

This also adds a ElementType property to ModelMetadata to maintain
the current separation of concerns as ModelMetadata is unaware of the
metadata provider.
2015-12-09 08:21:18 -08:00
Pranav K c6f8ced9a2 Fixing CoreCLR package versions 2015-12-08 16:40:03 -08:00
Pranav K 8c4b5c6c9a Fixing build break 2015-12-08 15:57:19 -08:00
Pranav K be46c7602e Add IAssemblyLoadContextAccessor to the service collection 2015-12-08 15:42:09 -08:00
Pranav K 218613bc0a Reacting to Diagnostics changes 2015-12-08 15:10:59 -08:00
David Fowler 6467d0d475 Add ILibraryManager explicitly 2015-12-07 18:00:03 -08:00
John Luo f9f59fe58b Reacting to verbose rename 2015-12-07 14:50:54 -08:00
Ryan Nowak 09a293afe9 React to routing cleanup 2015-12-07 13:08:13 -08:00
David Fowler 99f501152b Remove dependency on ICompilationOptionsProvider
- Removed Configuration from RazorViewEngineOptions
- Added ParseOptions and CompilationOptions to RazorViewEngineOptions
2015-12-07 12:29:52 -08:00
Ryan Nowak aa48f79816 Use Routing.Abstractions 2015-12-03 18:07:14 -08:00
Pranav K ff34c5404a Implement a backing-buffer for Razor using pooled memory
Fixes #3532
2015-12-03 17:42:20 -08:00
Doug Bunting 1f76b3c7b7 Clean up remaining `HtmlString` usage
- #3122 and #3123 (5 of 5)
- avoid concatenating values and wrapping them in an `HtmlString`
  - switch from `string.Format()` to `AppendHtml()` in `LinkTagHelper`
  - simplify `RazorPage` and `TagHelperContentExtensions` e.g. don't use a `TagHelperContentWrapperTextWriter`
  - add some special cases in `UrlResolutionTagHelper`
- add `TagBuilder` and `StringHtmlContent` special cases to avoid `StringWriter` use when value is an `HtmlString`
- move `HtmlTextWriter` optimizations a bit lower and add missing checks for that type

nits:
- correct comments that incorrectly mention `HtmlString`s
- update comments in `JavaScriptStringArrayEncoder`
2015-12-03 15:37:44 -08:00
Pavel Krymets 046dcefd14 Add extensibility point to Razor compilation 2015-12-03 12:04:07 -08:00
Doug Bunting 42f3e764b0 Move logic from `HtmlLocalizer` to `LocalizedHtmlString`
- part of #3123 (4 of 5)
- `LocalizedHtmlString` should not subclass `HtmlString`; now implements `IHtmlContent`

nits:
- clean up a few doc comments
- remove duplicate tests reported while testing these fixes in VS
2015-12-02 18:39:37 -08:00
Ryan Nowak 9fc3a80056 Remove IActionContextAccessor from UrlHelper
This change removes the IActionContextAccessor as a dependency of
UrlHelper, and shifts UrlHelper to use a factory pattern. Consumers of
IUrlHelper should create an instance using the factory when needed.

This is the last part of MVC that has a dependency on IActionContext
accessor. As part of this change we no longer register it by default, and
treat it as an optional component.
2015-12-02 17:09:43 -08:00
Brennan 3062eea7d0 Dispose FileWatcher, MvcRazorHost, and ChunkTree 2015-12-02 13:07:45 -08:00
Pranav K a424e3e278 React to namespace rename part 3 2015-12-02 11:56:38 -08:00
Pranav K 7e2eb16960 React to Microsoft.AspNet.Html namespace rename 2015-12-02 11:15:54 -08:00
Ryan Nowak 07085ca69b Remove IHttpContextAccessor from TempData
This change removes the dependency of TempData on the IHttpContextAccessor
by creating an ITempDataDictionaryFactory abstraction. In general, no one
will replace the factory, it's just indirection.

This allows us to drop our dependency on IHttpContextAccessor, and move it
to the functional tests where we specifically depend on it.

The bulk of code churn here is to update tests that use TempData.
2015-12-02 08:18:57 -08:00
Pranav K 70bdb6eb3e Removing CopyTo from RazorTextWriter 2015-12-01 12:37:11 -08:00
apxoht 7e1a6222aa Removed unused private method in DefaultActionSelector 2015-11-30 17:14:28 -08:00
Jeffiy 8428ec46e1 Remove extra null checks.
Fixes #3657
2015-11-30 16:53:10 -08:00
Ryan Nowak 6875ee55d3 Remove Magic Link Generation
This change resolves #3512 and #3636 by removing 'magic' link generation
and adding an extension method to add routes to areas correctly using the new
pattern. This is pretty much exactly the same as how MapWebApiRoute works.

For site authors, we recommend adding area-specific routes in a way that
includes a default AND constraint for the area. Put your most specific
(for link generation) routes FIRST.

Ex:

  routes.MapRoute(
      "Admin/{controller}/{action}/{id?}",
      defaults: new { area = "Admin" },
      constraints: new { area = "Admin" });

The bulk of the changes here are to tests that unwittingly relied on the
old behavior.
2015-11-30 11:24:23 -08:00
ryanbrandenburg 91e837d465 * Debug log exceptions in JsonInput deserializing 2015-11-30 11:19:22 -08:00
ryanbrandenburg d22d6793ba * Include DisplayName in errorMessage 2015-11-30 11:18:14 -08:00
Pranav K c5346f7bf9 Use string.IsNullOrEmpty instead of string.IsNullOrWhitespace
Fixes #3593
2015-11-30 10:00:44 -08:00
N. Taylor Mullen 490fcf1ab4 Remove the use of `Linq` and unneeded enumerators from Mvc `TagHelper`s.
- Prior to this change we were using `Linq` throughout our `TagHelper`s which resulted excess allocations.
- Also went through our data structures and changed some from `Enumerable<T>` to `IList<T>` where we were just not exposing the more accessible types (list).
- Changed several locations of `foreach` to `for` to remove the enumerator allocation.

#3599
2015-11-25 21:31:24 -08:00
Ryan Nowak a14fdd8637 Remove FormatFilter dependency on IActionContextAccessor
This change simplifies IFormatFilter's API and removes the dependency on
IActionContext accessor.

The old API for IFormatFilter required computing state based on the
current request as part of the constructor, which in turn implied the use
of a context accessor. This isn't really needed. I didn't preserve caching of
the 'format' as that seems like an early optimization.
2015-11-25 17:01:16 -08:00
Ryan Nowak d8cc2b85d5 Adds ActionContext to Validation contexts
This change makes it possible to access the ActionContext/ActionDescriptor
from inside of validators and client validators.
2015-11-25 16:38:26 -08:00
Pranav K 017bf1a20f Changes to use moq-netcore 2015-11-25 16:04:04 -08:00
Ryan Nowak 0832365ec2 Adds ActionContext to OperationBindingContext
This change makes it possible to access the ActionContext/ActionDescriptor
from inside of modelbinding.
2015-11-25 15:17:09 -08:00
Kiran Challa 31e42ee312 [Fixes #3433] Invalid media type 'text/plain; charset=utf-8' 2015-11-25 10:50:40 -08:00
Ryan Nowak 4bcf236450 MVC companion to aspnet/Routing#238
This is a companion change to make the RouteValueDictionary type more
promient. Using the concrete type here allows to avoid allocations in a
lot of common scenarios.
2015-11-25 10:36:50 -08:00
Doug Bunting 6e299d695f Update `DefaultHtmlGenerator.GenerateAntiforgery()` to match latest `IAntiforgery.GetHtml()`
- #3123 (3 of 5 or so)
- react to rest of aspnet/Antiforgery@6a9b38d
  - remove `HtmlEncoder` from localization requirements
  - literal `hidden` is no longer HTML encoded (was a no-op anyhow)
2015-11-25 09:49:15 -08:00
Doug Bunting 7bb0a1a4fe Update `IJsonHelper` to use `IHtmlContent`
- part of #3123 (2 of 5 or so)
- do not expose specific `HtmlString` class
2015-11-25 09:49:05 -08:00
Pranav K ba1d064b99 Cleaning up RazorPage 2015-11-25 09:20:55 -08:00
Pranav K 79d517483b Removing PageInstrumentation
Fixes #3497
2015-11-25 08:41:21 -08:00
Pavel Krymets 5ef14e95b7 React to dnx confguration change 2015-11-24 11:54:10 -08:00
apxoht 1c34d88f4c Removed unnecessary dependency of IActionSelector in UrlHelper 2015-11-23 15:44:55 -08:00
Pranav K b622a5b0d3 Bump Razor to dotnet5.5 2015-11-23 15:31:59 -08:00
ryanbrandenburg 4a61dfec6d * Make HttpMethodConstraint case insensitive 2015-11-23 11:50:44 -08:00
Doug Bunting eb70b1c28c Remove `WebUtility` use and handle `IHtmlContent` return values from view components
- #3571 and part of #3123
- split `ContentViewComponentResult` in two
- add `HtmlEncoder` to `ViewComponentContext`
- remove use of `WebUtility.HtmlEncode()` and `HtmlDecode()`

nits: remove unused `using`s in files I had open
2015-11-23 11:12:44 -08:00
Ryan Nowak bbdfbf4cc3 Remove per-instance string.Concat 2015-11-23 10:25:42 -08:00
Doug Bunting 45ff0a269c Make `ModelBinderAttribute.BindingSource` setter `protected`
- #3428
- the `public` setter was not useful when this class is used as an attribute
- make property `virtual` to support other override patterns
- update existing test to use both override patterns
2015-11-20 16:31:27 -08:00
apxoht 535fdf3356 Removed unnecessary call to MetadataProvider.GetModelExplorerForType in Controller.TryValidateModel 2015-11-20 15:41:42 -08:00
Ryan Nowak 8682fe0cfd Replace ActionBindingContext with ControllerContext
This change introduces ControllerContext for inside of Controllers, and
controller-specific extensibility points. ControllerContext carries with
it the model binding infrastructure needed to do all of the things that
controllers need to do.
2015-11-20 15:32:37 -08:00
Doug Bunting 62978229c4 Ease unit testing of `Controller.TryValidateModel()`
- #3586
- reverse conditions to access `_options.Value` only when test has set up an `IStringLocalizerFactory`
2015-11-20 10:37:07 -08:00
N. Taylor Mullen 2dc13b523d React to aspnet/Razor#358.
- Removed `WriteTagHelperAsync` methods from `RazorPage`.
- Moved `WriteTagHelperAsync` tests into Razor since `TagHelperOutput` is now an `IHtmlContent`.
- Updated code generation test files.

aspnet/Razor#358
2015-11-20 10:05:48 -08:00
Ryan Nowak d6bda0ec11 CompilerCache should not compile multiple assemblies for the same page.
Fixes #3469
2015-11-19 15:12:15 -08:00
Pranav K 155bde0fcf Pass in the area name instead of the view name to a parameter that
requires an area name.

Fixes #3556
2015-11-18 17:50:14 -08:00
Doug Bunting 95b3d2c1dd Address PR comments
- removed `isMainPage` parameter to `GetPage()` and `FindPage()`
2015-11-18 15:59:46 -08:00
Doug Bunting 3be6167aa0 Switch concepts from misnamed `isPartial` to `isMainPage`
- `true` has the opposite meaning now but most changes are due to new parameters names in `IViewEngine`
  - use name names in `Microsoft.AspNet.Mvc.ViewFound` and not found events
- remove `IRazorPage.IsPartial` and `RazorView.IsPartial`
  - remove `IsPartial` properties from `Microsoft.AspNet.Mvc.Razor.BeginInstrumentationContext` and end events
- add parameter checks to `RazorView` constructor; instances are not retrieved from DI

nits:
- remove unused `cacheKey` parameter from `RazorViewEngine.CreateCacheResult()`
- correct duplicate test names in `RazorPageTest`
  - also `...OnPageExecutionListenerContext` -> `...OnPageExecutionContext`
2015-11-18 15:59:37 -08:00
Doug Bunting cf30bb730f PR comments and some smallish cleanup
- `IRazorViewEngine.MakePathAbsolute()` -> `GetAbsolutePath()`
- set `IsPartial` on all `IRazorPage` instances
- improve consistency of methods in `HtmlHelperPartialExtensions`
  - a couple unnecessarily passed `htmlHelper.ViewData`
  - add missing tests of these extension methods
- restore parameter checks in `CompositeViewEngine`
- reduce `List<string>` and remove enumerator allocations in `CompositeViewEngine`

nits:
- correct a few comments
- use `<seealso/>`
2015-11-18 15:59:28 -08:00
Doug Bunting d1fe824b5d Improve `SearchLocations` handling
- do not blindly use `FindPage()` / `FindView()` result in `Exception.Message` or returned results
  - failure scenarios involve new `Any()` calls but rarely additional `List<string>()` allocations
- change `ViewEngine_ViewNotFound` resource to be consistent with similar errors
  - remove trailing period at end of searched locations list

nit: remove remaining `null` checks of `SearchedLocations` in not found cases; never `null` then
2015-11-18 15:59:20 -08:00
Doug Bunting 08dd77d8c7 Add relative view path support
- #3307
- relative paths are now supported in `View()` calls from components and view components,
  `Html.PartialAsync()` and similar calls, and `RazorPage.Layout` settings.
  - support absolute paths, relative paths, and view location lookups consistently / everywhere
  - support view paths in `TemplateRenderer` e.g. passing an absolute path to `Html.EditorFor()`
- take a big swing at the `IRazorViewEngine` and `IViewEngine` interfaces
  - split lookups (view names) from navigation (view paths)
  - remove `Partial` separation; use parameters to set `IsPartial` properties
- correct `ViewContext` copy constructor and add unit test
- extend unit tests to cover relative paths
  - fix existing tests to handle newly-required extension in an absolute path
- add functional test that chains relative paths

nits:
- remove some YOLO line wrapping
- `""` -> `string.Empty`
2015-11-18 15:59:11 -08:00
Pavel Krymets 349b2f3963 Add HttpContextAccessor because Hostring doesn't do it by default 2015-11-18 14:44:35 -08:00
Doug Bunting b3c68defe8 Change `IViewComponentHelper` methods to return `IHtmlContent`
- #3152
2015-11-18 12:21:39 -08:00
Kiran Challa 85080ae621 Make Cors filters run before any other authorization filters 2015-11-18 10:51:49 -08:00
Kiran Challa 982c7abea8 [Fixes #3503] Removing formatters on a given type only works on collections in MVC options 2015-11-18 09:56:44 -08:00
Ryan Nowak a65a6a7cab React to change in Razor 2015-11-18 09:53:24 -08:00
Pranav K b520b0cb22 Limit [FromServices] to apply only to parameters
Fixes #3507
2015-11-17 16:41:04 -08:00
herecydev db94a8ed19 Removed redundant null checks and tested logging 2015-11-17 15:32:54 -08:00
Ajay Bhargav Baaskaran 01102bba3f Moving Attribute Routing to Routing 2015-11-17 11:02:58 -08:00
N. Taylor Mullen 73f557002f Add `AddDataAnnotationsLocalization` parameterless overload.
- The `IMvcBuilder` extension methods already had this overload, just adding it to `IMvcCoreBuilder`.

#3517
2015-11-17 10:05:18 -08:00
Ryan Nowak e75eebbed0 Pool JsonSerializer for Output formatting 2015-11-16 10:43:02 -08:00
Ryan Nowak ccfd235f50 React to change in HtmlAbstractions 2015-11-16 09:49:20 -08:00
Pranav K 292207d17d Reacting to DependencyInjection changes 2015-11-13 10:47:34 -08:00
Ajay Bhargav Baaskaran b8b222b295 Replace InnerAttributeRoute with TreeRouter 2015-11-12 15:52:51 -08:00
ryanbrandenburg b8d58133c3 * Add NoContent Factory to Controller 2015-11-12 14:56:05 -08:00
ryanbrandenburg ed46885586 * Log correct message for Found/NotFound views 2015-11-12 14:53:00 -08:00
N. Taylor Mullen a1af85beb7 Remove System beta tag in project.json for coreclr packages. 2015-11-12 12:24:39 -08:00
Ryan Nowak 5810154826 Avoid creating intermediate strings with THCWTW
This textwriter needs to inherit HtmlTextWriter and the
StringCollectionTextWriter needs to have the right conditional test.

This allows us to 'pass-through' any IHtmlContent instances without
writing out intermediate strings.
2015-11-11 16:59:46 -08:00
Cesar Blum Silveira 4a68550e50 Merge branch 'release' into dev 2015-11-11 10:59:32 -08:00
Kirthi Krishnamraju 454ff9f52a fix #3414 : RegularExpressionAttribute generates wrong data-val-regex message 2015-11-10 10:27:53 -08:00
Pranav K 380a93d370 Redesign RazorViewEngine caching
Fixes #3337
2015-11-10 10:18:25 -08:00
Ryan Nowak ece6ecde45 Add buffer pooling to JsonResult 2015-11-09 15:43:33 -08:00
Pranav K d17db92e19 Log messages to DiagnosticListener in addition to page instrumentation
Fixes #3281
2015-11-09 10:24:49 -08:00
Doug Bunting cef4a66479 Another `System.RuntimeSerialization.Xml` version update
- #3493
- see also d4163b4

nit: sort properties
2015-11-07 15:34:07 -08:00
Pavel Krymets 737a8f3b1d Make Compilation Abstractions naming consistent with Platform Abstractions 2015-11-06 15:53:08 -08:00
Ajay Bhargav Baaskaran 1927730f40 [Fixes #3426] Removed defensive copy in CompositeModelBinder and CompositeModelValidatorProvider 2015-11-06 12:21:08 -08:00
N. Taylor Mullen decf882341 Update `LinkTagHelper`s `meta` tag to be w3c compliant.
- Prior to this change the `<meta ...>` generated had a name attribute. As an alternative we're using the `content` attribute in conjunction with the `name` attribute to ensure compliance.

#3449
2015-11-06 12:15:55 -08:00
Ajay Bhargav Baaskaran f7a211c095 Removed use of LINQ and added some optimizations in ValidationVisitor 2015-11-06 11:56:52 -08:00
Kiran Challa 5364468001 [Fixes #3177] Clean up logic for encoding in ViewResult and friends 2015-11-06 10:44:09 -08:00
Cesar Blum Silveira 8bf2c72e69 Sign Microsoft.AspNet.Mvc. 2015-11-05 14:00:54 -08:00
ryanbrandenburg cd761a644d * Adding test 2015-11-04 13:55:02 -08:00
Pranav K 940fb7ba78 Adding Controller.Challenge and Controller.Forbid 2015-11-04 09:57:19 -08:00
Cesar Blum Silveira 9dba871108 Strong name everything. 2015-11-03 21:16:49 -08:00
Ryan Nowak af1142e7b5 Merge branch 'release' into dev 2015-11-03 18:52:48 -08:00
Ryan Nowak d4163b4127 Update serialization to 4.1.0 2015-11-03 17:53:47 -08:00
Pavel Krymets b4b29e71d6 Rename Microsoft.Dnx.Compilation.Abstractions to Microsoft.Extensions.Compilation.Abstractions 2015-11-03 12:42:28 -08:00
Ryan Nowak 32da2b8c46 Fix breaking changes from HttpAbstractions 2015-11-02 18:19:10 -08:00
Ryan Nowak e2c2676042 Add InputFormatter buffer pooling 2015-11-02 14:36:59 -08:00
Doug Bunting ff91e796c1 Revert "Fixing tests"
- wrong fix especially now that test encoders work as expected
- touch up `HtmlHelperTest` and `RazorViewTest` since test encoders are now consistent
- remove references to old `Microsoft.Extensions.WebEncoders.Testing` package

This reverts commit a9d5876cd9.
- but leave `FormTagHelperTest` and `ValidationMessageTagHelperTest` cleanup alone

nit: use `string.Empty` in `HtmlHelperLinkGenerationTest`
2015-11-02 09:45:56 -08:00
Pranav K a9d5876cd9 Fixing tests 2015-10-30 18:58:33 -07:00
Chris R 52f4a83139 React to WebEncoders changes. 2015-10-30 17:59:19 -07:00
Doug Bunting 53060be2d7 Content negotiation fails in subsequent requests accepting same media type
- #3140
- clone `MediaTypeHeaderValue` instance before updating it when content negotiation succeeds
  - avoids changes to `MediaTypeConstants` properties and `OutputFormatter.SupportedMediaTypes` entries
  - `MediaTypeHeaderValue.Clone()` does not exist in our DNX Core fork of this class
  - in previous implementation, was called defensively rather than when required
- update `WebApiCompatShimBasicTest` functional tests to use `MvcTestFixture<TStartup>` everywhere
  - #3140 blocked that final migration
  - remove `TestHelper` since it's no longer referenced

nits:
- remove comments mentioning `TestHelper`
- correct spelling of "negotiation"
2015-10-30 14:10:31 -07:00
ryanbrandenburg 5763eb580a * Move logging to new style 2015-10-30 12:43:17 -07:00
Muchiachio bd9fc5dc68 Using IsDefined over GetCustomAttribute<T>
- Replaced Type.GetCustomAttribute<T> with Type.IsDefined where the
attribute instance is only used to check if it's defined, to increase
performance.

Resolves #3416
2015-10-30 10:19:22 -07:00
Pranav K 08be63c3fc Add ForbiddenResult
Fixes #3242
2015-10-30 10:13:58 -07:00
Ryan Nowak 1312ed8b71 Remove Linq and boxed Enumerator allocations from conneg 2015-10-29 18:40:22 -07:00
N. Taylor Mullen 5ad1a27f6e React to aspnet/Razor#580.
- Updated `MvcRazorHost` to configure `Type` full names.
- Updated code generation tests.
2015-10-29 16:26:00 -07:00
Pavel Krymets f1412c21ac Fix the build 2015-10-26 16:47:11 -07:00
Pranav K 0fedda5855 Allow enums to be serialized by SessionStateTempDataProvider
Fixes #3141
2015-10-24 08:16:19 -07:00
Ryan Nowak ec2abc8ae0 Add logging of elapsed time for the action. 2015-10-23 15:35:31 -07:00
Ryan Nowak cea8d019f1 Add logging and scope for ViewComponent 2015-10-23 15:25:00 -07:00
Ajay Bhargav Baaskaran eb398c811d Added LocalRedirectresult
- Fixes #3346
- Added helper method in controller
- Added relevant tests
2015-10-23 12:58:41 -07:00
Ajay Bhargav Baaskaran b6d7012c27 [Fixes #3279] Added DiagnosticSource for filters 2015-10-23 12:53:00 -07:00
Ajay Bhargav Baaskaran 624c918de5 [Fixes #3274] Added DiagnosticsSource for ViewComponent 2015-10-23 12:51:12 -07:00
Ryan Nowak bcde82cf62 Use buffer pooling in IOutputFormatters 2015-10-23 08:10:30 -07:00
Pavel Krymets 4e8c543489 Rename Microsoft.Runtime.Abstractions to Microsoft.Extensions.PlatformAbstractions 2015-10-22 19:48:55 -07:00
ryanbrandenburg 0b8fe87596 * Allow null ViewData and TempData 2015-10-22 17:28:26 -07:00
N. Taylor Mullen 911dfc57b0 Transition `SelectTagHelper` and `OptionTagHelper` to use `context.Items`.
- Added functional tests to validate data created from a `SelectTagHelper` does not impact following `<select>` tags.
- Also moved the new `SelectTagHelper` communication flow into `TagHelper.Init`.

#3347
2015-10-22 17:17:01 -07:00
Doug Bunting c267ef3904 Rename `AppendEncoded()` to `AppendHtml()` and `SetContentEncoded()` to `SetHtmlContent()`
- #3225, 3 of 3
2015-10-22 16:57:47 -07:00
N. Taylor Mullen faa78a3d91 Transition from `IAssemblyLoadContext` to `AssemblyLoadContext`.
- `IAssemblyLoadContext` is a DNX defined type that will eventually go away.

#3365
2015-10-22 16:15:10 -07:00
N. Taylor Mullen 493a556168 Fixed xml docs build error. 2015-10-22 16:11:17 -07:00
Doug Bunting 40b7636b72 Use `ModelMetadata.GetDisplayName()` in error message replacing `FormatException` and `OverflowException`
- #3227
- much of change is to tests, creating and passing `ModelMetadata`
- updated `InputFormatterContext` to make `ModelMetadata` available to `JsonInputFormatter`
  - walk `ModelMetadata` tree to get information about property with an issue
- add missing `null` checks in `ModelStateDictionaryExtensions`
2015-10-22 15:50:36 -07:00
N. Taylor Mullen 9b9d72f3f7 Remove unneeded namespaces.
aspnet/Razor#578
2015-10-22 15:34:40 -07:00
N. Taylor Mullen 0ae83a25e9 React to aspnet/Razor#571.
- Changed all `GetChildContentAsync` calls to come from `TagHelperOutput` instead of `TagHelperContext`.
- Updated `ReaderAtEndOfFormTagHelper` to properly detect changes inside of a `Form`s body by calling the `Init` method.
- Add test to `RenderAtEndOfFormTagHelperTest`.

aspnet/Razor#571
2015-10-22 14:51:14 -07:00
N. Taylor Mullen 0e25470660 React to aspnet/Razor#578. 2015-10-22 14:41:40 -07:00
Henk Mollema 34d4dfdef8 Rename Context to HttpContext in ViewComponent and RazorPage
Rename the property to `HttpContext` to be consistent with the `Controller` class.
Fixes #3332
2015-10-22 14:39:55 -07:00
N. Taylor Mullen 8623946784 Add compilation services when adding Razor.
#3383
2015-10-22 11:49:02 -07:00
Ryan Nowak f2af02b1cb Improve logging behavior for actions scope 2015-10-22 11:23:04 -07:00
Ryan Nowak dcec94f6d9 Change ActionMethodExecuted to be Verbose 2015-10-22 10:21:36 -07:00
Pranav K 91aeec95e9 Switching to generations TFMs 2015-10-22 01:20:00 -07:00
ryanbrandenburg da731fc641 Add logging to ActionResults and ControllerActionInvoker 2015-10-21 13:16:14 -07:00
Ryan Nowak 1474ed8fe8 Fix breaks to xml docs 2015-10-20 23:31:02 -07:00
Ryan Nowak 3576939457 Fix break in XmlSerializerOutputFormatter tests
The wrong type is being passed in to the wrapper-provider for
XmlSerializer. DCS formatter is already correct.
2015-10-20 22:25:56 -07:00
Ryan Nowak 800e46eed4 Fix failures in StringOutputFormatter functional tests
The missing piece here is is that StringOutputFormatter needs to set the
ContentType so that it gets overridden. The problem is that the formatter
is likely called with something like application/json, but decides to
write a string anyway. So because we're saying 'yes we can write' we also
need to override what we're writing.
2015-10-20 22:12:21 -07:00
Eilon Lipton 55b72c04bf Add high-pri doc comments for views, controllers, HTML helpers, Startup 2015-10-20 18:24:56 -07:00
Ryan Nowak 38b65875db Refactor of OutputFormattterContext 2015-10-20 18:05:57 -07:00
Pranav K 8b0c157296 Rename ModelState (the type) -> ModelStateEntry
Fixes #3326
2015-10-20 16:43:00 -07:00
Ryan Nowak 173f00fda7 Update to use DiagnosticSource 2015-10-20 11:47:29 -07:00
Ryan Nowak 054b39013c Reduce allocations in MSD enumeration 2015-10-20 10:35:16 -07:00
Ryan Nowak 06cc58663e Move implementation of ObjectResult into a facade 2015-10-19 11:56:03 -07:00
Ajay Bhargav Baaskaran 6bd97c7c30 Moving AllowAnonymous attribute to Authorization 2015-10-19 11:01:15 -07:00
Pranav K f4a6d634b5 Modify ViewStartUtility to generate always view paths with forward slashes
Fixes #3294
2015-10-19 10:33:05 -07:00
unknown 6a4da5d795 PhysicalFileResult throws NotSupported on path not rooted 2015-10-16 13:31:52 -07:00
Ryan Nowak 32645e93c8 Add expression rewriting to Razor
This change rewrites simple and safe Expression<Func<T, U>> expressions
into accesses to readonly fields. This allows us to cache the actual
expression and avoid repeatedly allocating and compiling it.

The rewrite is limited to cases where we know that the expression doesn't
capture, and where we support that kind of expression for evaluating
viewdata. In practice this means 'indentity' and property accessors are
allowed.
2015-10-16 12:28:50 -07:00
Ajay Bhargav Baaskaran 6ef2fe44ca [Fixes #3250] Remove RouteGroup from RouteValues 2015-10-16 10:57:22 -07:00
Doug Bunting 9b004611e5 Address PR comments for 2e2043f (PR #3317)
- remove redundant `null` check in `InputFormatter`
- improve comments
- rename `ObjectResult.SelectFormatterBasedOnTypeMatch()` -> `SelectFormatterNotUsingAcceptHeaders()`
2015-10-15 20:26:03 -07:00
Kiran Challa fbf66168fe React to Cors api review changes 2015-10-15 13:05:08 -07:00
Hao Kung fd17481a73 React to AuthZ changes 2015-10-14 17:04:31 -07:00
Ajay Bhargav Baaskaran d40e6612a4 Moving the order of generated hidden tags for checkbox to end of the form
- #2994
- Affects both HtmlHelper and TagHelper scenarios
- Checkboxes not enclosed in a form will generate inline hidden tags
- Added necessary properties to FormContext
- Added some functional and unit tests
2015-10-14 15:43:13 -07:00
Doug Bunting 03625c38af Correct polarity of MediaTypeHeaderValue.IsSubsetOf()` checks and remove one conneg fallback
- aspnet/Mvc#3138 part 2/2
- request's Content-Type header must be a subset of what an `IInputFormatter` can consume
  - `[Consumes]` is similar
- what an `IOutputFormatter` produces must be a subset of the request's Accept header
  - `FormatFilter` and `ObjectResult` are similar
- `ObjectResult` no longer falls back to `Content-Type` header if no `Accept` value is acceptable
- left `WebApiCompatShim` code alone for consistency with down-level `System.Net.Http.Formatting`
- correct tests to match new behaviour
  - do not test `Accept` values containing a `charset` parameter; that case is not valid

WIP:
- four test failures; something about comparing media types w/ charset included
- why do some localization tests fail in VS?

nits:
- add `InputFormatterTests`
- add / update comments and doc comments
- correct xUnit attributes in `ActionResultTest`; odd it doesn't show up in command-line runs
2015-10-14 11:59:20 -07:00
Doug Bunting 9aed5efd51 Add `null` checks for MVC tag helpers 2015-10-14 11:27:25 -07:00
Pranav K 0309a5216c Add an option to RazorPrecompileModule to allow conditional compilation
based on Configuration.

Fixes #3276
2015-10-12 11:59:55 -07:00
Chris R 6e347724b5 React to IHeaderDictionary changes. 2015-10-12 11:38:24 -07:00
Ryan Nowak 9342cb0ab7 Suppress [Obsolete] warnings from DiagnosticSource 2015-10-08 12:47:08 -07:00
Pranav K 91cb6281e4 Using @inherits and @model together gives intellisense errors
Fixes #3243
2015-10-08 11:02:20 -07:00
Pranav K 18912b9530 Removing NotNullAttribute.Sources references that were left behind 2015-10-06 17:36:46 -07:00
Pranav K 30f5826380 Use Type.GetMethod in ViewComponentMethodSelector
Fixes #3211
2015-10-06 16:21:56 -07:00
Ryan Nowak d9e40d92de Make ModelPropertyCollection inherit ReadOnlyCollection<T>
Just some small cleanup. Did a search and all of our other custom List-ish
things inherit either Collection<T> or ReadOnlyCollection<T>.

Still no good solution for dictionaries.
2015-10-06 14:43:02 -07:00
Ryan Nowak 0dadf56fc8 Reducing allocations in value providers
- Don't go async in formdata providers unless we need to
- Remove unnecessary defensive copy in CompositeValueProvider
2015-10-06 14:25:19 -07:00
Ryan Nowak 082f175b48 Optimize allocations in GetFilters
Doing it the old fashioned way to get rid of some allocations.
2015-10-06 13:41:44 -07:00
Ryan Nowak e54da5e6f6 Remove dead code in invoker (SetStage) 2015-10-06 13:28:33 -07:00
Ryan Nowak 761c7e6751 Optimize allocations for creating ActionConstraints 2015-10-06 12:35:13 -07:00
Ryan Nowak 1ed22e5939 Avoid state machine and allocation for 0-parameters 2015-10-06 12:02:49 -07:00
Pranav K 04d72d8894 Simplify FileResult
Fixes #3249
2015-10-06 11:26:56 -07:00
Ryan Nowak 04c6fceb94 React to aspnet/Routing#215 2015-10-06 10:37:56 -07:00
Anthony van der Hoorn a0764faa86 Bring arguments inline between before/after events 2015-10-05 16:42:25 -07:00
Ryan Nowak 32c174c791 CR feedback from attribute dictionary 2015-10-05 10:38:46 -07:00
Ryan Nowak ad3c257ef5 Fix for #3252 - Issues with pooled buffer + unicode
- Dispose buffers when Flush throws inside the Dispose method
- Compute size of buffers correctly
- Throw earlier when handed invalid-sized buffers
2015-10-05 09:45:23 -07:00
Pranav K f57e180971 Renaming Microsoft.Framework.* -> Microsoft.Extensions.* 2015-10-03 15:44:53 -07:00
Ryan Nowak 6185b16795 Custom dictionary type for attributes 2015-10-02 18:08:58 -07:00
Ryan Nowak 4e08eda58d Use pooled memory for the streamwriter 2015-10-02 14:35:15 -07:00
Ryan Nowak 306776ff63 Minor cleanup/refactor of ViewResult
- Make ViewExecutor a service
- Add facades for ViewResult/PartialViewResult
- Add eventing for ViewFound/NotFound in PartialViewResult
- Add eventing around view execution
- Cleanup of some various eventing & our tests code
2015-10-02 08:18:00 -07:00
Kiran Challa eef6c3883a Renamed PhysicalFileProviderResult and VirtualFileProviderResult to PhysicalFileResult and VirtualFileResult respectively 2015-10-01 19:57:35 -07:00
Kiran Challa 130d94eb7e [Fixes #3068] TempData fails silently without sessions middleware 2015-10-01 19:28:46 -07:00
Pranav K 2028351bb8 React to WriteAttribute \ AddHtmlAttribute API changes 2015-10-01 10:19:14 -07:00
Pranav K 5a705d820d Replacing NotNullAttribute with thrown exceptions 2015-10-01 08:23:21 -07:00
Pranav K 3a876e387f Replacing NotNullAttribute with thrown exceptions 2015-10-01 06:19:18 -07:00
Pranav K 02c36a1c48 Replace NotNullAttribute with thrown exceptions 2015-09-30 17:18:16 -07:00
Ajay Bhargav Baaskaran eefa58e617 [Fixes #3043] Overflow exceptions converted to invalid value messages 2015-09-29 16:24:19 -07:00
Gerardo Melendrez f162f70c1e Fixed typo (occured to occurred) in comments and resources. 2015-09-29 10:19:26 -07:00
Doug Bunting 13af6f8e1a Wrap rather long line in 9243d83 2015-09-29 09:58:23 -07:00
Stefán Jökull Sigurðarson c713aa92ca Making the HtmlHelper.GetEnumSelectList take DisplayAttribute.GroupName into account to create select groups. 2015-09-29 09:53:48 -07:00
Ryan Nowak d37f5aeb31 Fix #3217 - Optimize IList.GetEnumerator allocations
This change fixes call sites on the main request path for a simple site
(model binding, validation, views) that allocate boxed list enumerators.

Some cases aren't addressed by this change because the fix is too invasive
or requires changing an important contract to take IList instead of
IEnumerable. Will follow up on those case by case in order of importance.
2015-09-28 16:17:48 -07:00
Doug Bunting 28aec3f5cc Support user overrides of system-provided `ModelError` messages
- #2969
- add `ModelBindingMessages` for configuration and `IBindingMetadataProvider` overrides
  - use `interface` to avoid `new` oddities when adding a setter to an `abstract` property
- add `IModelBindingMessages` to `ModelMetadata` for use in rest of the product code
- plumb the various bits through the system
- add integration tests using a custom `IBindingMetadataProvider`s to override messages

nits:
- remove unused resources
- use `AttemptedValue` and not `model` in `SimpleTypeModelBinder`
2015-09-28 15:50:21 -07:00
Ryan Nowak 0d6edf240a Move ModelExplorer to ViewFeatures 2015-09-28 14:14:40 -07:00
Søren Kruse ec18b35123 Add FormatterCollection<T>
#2945
2015-09-28 13:23:19 -07:00
Ryan Nowak 67b43b4cfe Workaround Mono bugs to fix travis
This change works around two mono issues that are blocking travis. I'd
like to have tests skip instead, but unfortunately that would mean not
running any validation tests on mono so this seems better.

- RuntimeHelpers.GetHashCode will sometimes crash the runtime
- PropertyHelper sometimes returns throws null-ref
2015-09-28 12:58:45 -07:00
Pranav K 18c80d156c Replace NotNullAttribute with thrown exceptions 2015-09-26 23:48:43 -07:00
Doug Bunting eff10cdd66 Move `ModelStateDictionaryExtensions` into `Microsoft.AspNet.Mvc.ModelBinding` namespace
- missed the inconsistency when reviewing
- kept class in ViewFeatures assembly because it depends on `ExpressionHelper`

nit: wrap some long lines
2015-09-26 18:15:04 -07:00
Muchiachio b28debf442 Generic ModelStateDictionary add and remove extensions
- Added generic add model error and remove extensions for
ModelStateDictionary, to avoid using hard coded strings then specifying
model state dictionary keys.
- Added generic removal all  extension for ModelStateDictionary, to
support removing all the model state keys for given expression.

aspnet/Mvc#3164
2015-09-26 18:14:58 -07:00
Pranav K 6a0a24481a Asynchronously flush the HttpResponseStreamWriter after a view has been rendered.
This solves a perf issue for views which produce content that is smaller
than the buffer size of HttpResponseStreamWriter. In this case, the writer
ends up synchronously writing to the Response as part of Dispose which
affects perf.
2015-09-25 21:07:15 -07:00
Ryan Nowak 8a502dbe5d Rewrite of validation 2015-09-25 16:56:42 -07:00
Kirthi Krishnamraju 0889b18f95 Add localizers to validation attributes 2015-09-25 16:13:21 -07:00
Nero Sule 49acfd562e Adds common interfaces around Models (Implements #3158) 2015-09-25 11:10:59 -07:00
Ajay Bhargav Baaskaran 9c81b95d1b Renamed Controller.Context to Controller.HttpContext
- #3165
2015-09-25 11:01:30 -07:00
Ryan Nowak 5a80435534 API Review - Move ModelBindingHelper 2015-09-25 09:59:56 -07:00
Kirthi Krishnamraju ed509f65a2 fix #2747: Fix Mvc localization test once dnx support reading resources 2015-09-24 12:53:20 -07:00
Pranav K 1833e06984 TModel substitution in Razor pages has broken intellisense
Fixes #3185
2015-09-23 17:47:52 -07:00
Pranav K ff4100e292 Generate an expression to create line mappings for ModelChunk directives 2015-09-23 16:14:29 -07:00
Pranav K 89f58aa49f Allow @model specified in a page work with @inherits directive in
_ViewImports

Fixes #3144
2015-09-23 12:10:10 -07:00
Ryan Nowak 80add92de8 React to removal of TagHelperContent.ToString()
Avoid calling ToString on a TagHelperContent.

Also react to new properties on TagHelperCodeGenerationContext
2015-09-23 11:09:27 -07:00
Doug Bunting d8d0a1ab89 Rename `ModelMetadata.IsCollectionType` and add "real" `ModelMetadata.IsCollectionType`
- #3022
- existing `IsCollectionType` -> `IsEnumerableType`
- use new `IsCollectionType` in a few places
2015-09-22 19:05:40 -07:00
Pranav K 1574637a6a Reacting to Microsoft.AspNet.Cors version change 2015-09-22 11:26:04 -07:00
Pranav K 9eb2c5b810 Reacting to IExpirationTrigger -> IChangeToken rename 2015-09-22 08:14:34 -07:00
Ryan Nowak b544aabfdb Fix #3111 - Don't trounce content-type in VCR
This change makes ViewComponentResult respect an existing Content-Type
setting on the HttpResponse. Code is very similar to the code in
ViewExector, and includes the same quirks.
2015-09-21 23:20:20 -07:00
Ryan Nowak a318c4599a API Review - Split up .Actions
Abstractions - Core MVC extensibility

Controllers - MVC implementations of .Abstractions and supporting
contracts

Infrastructure - General purpose support APIs. Metadata APIs that don't
fit clearly with a feature or with .Abstraction
2015-09-21 21:54:02 -07:00
Pranav K 00b6e71e31 Changes per NotNull PR comments 2015-09-21 17:22:27 -07:00
Pranav K 498d209949 Remove chaining from HashCodeCombiner.
Reacting to https://github.com/aspnet/Common/issues/40
2015-09-21 17:11:08 -07:00
Pranav K f045c6792b Allow _ViewImports to remove default inherited tag helpers.
Additionally simplifying the contract for
ChunkInheritaceUtility\IChunkMerger so we don't have to understand the
order in which CodeTrees appear.
2015-09-21 14:53:24 -07:00
Ryan Nowak b95dcd5f1c Fix #3102 - Add an AddMvcOptions to builders
This makes it easier/possible for any third party code that extends
IMvcBuilder to set options.
2015-09-21 12:54:59 -07:00
Ryan Nowak f4c5e31ec1 Remove JsonPatch from MVC
JsonPatch is moving to https://github.com/aspnet/JsonPatch
2015-09-21 11:14:40 -07:00
Pranav K 66a04c2fd6 Replacing NotNullAttribute with thrown exceptions 2015-09-21 10:26:14 -07:00
Ryan Nowak 00c436b0e1 [Perf] Remove use of [FromServices] on Controller
[FromServices] requires modelbinding to run for each of these four
properties, which allocates a lot, and ultimately just ends up calling
GetRequiredService in the end.

Also, retrieving these services is now lazy, which should be very
beneficial as few of them aren't used often.
2015-09-21 08:53:12 -07:00
Ryan Nowak 9badd9386e API-Review Strongly-typed collections for a few options types.
We don't want these extensions methods defined in a wierd namespace, it's
straightforward and future-proof to just make these strongly-typed
collections.
2015-09-20 22:11:22 -07:00
Ryan Nowak 10ec9144ca Remove extra registration of TelemetrySource
This is now provided by hosting.
2015-09-20 21:16:01 -07:00
Ryan Nowak 4d55a6e62d API review - remove DefaultOrder
No change in behavior intended, removing this from our public API.
2015-09-20 21:11:57 -07:00
Ryan Nowak ccb5ead450 Api-Review - put uri complexity in CreatedResult 2015-09-20 19:44:32 -07:00
Doug Bunting 42017faa21 Add `InputFormatterResult` and `InputFormatterContext.ModelName`
- #2722
- make communication of errors from formatters to `BodyModelBinder` explicit
  - `JsonInputFormatter` now adds errors to `ModelStateDictionary` with correct key
- change `InputFormatter.SelectCharacterEncoding()` to add an error and return `null` when it fails
  - one less `Exception` case and removes some duplicate code

nits:
- improve some doc comments (more `<inheritdoc/>`, `<paramref/>` and `<see/>`)
- add another two `BodyValidationIntegrationTests` tests
2015-09-19 21:36:38 -07:00
Doug Bunting 0fb09908d3 [Build break] Correct doc comment references to match current namespaces
- local command line builds fail consistently during `xml-docs-test`
- bit buried on the CI machine but repo is not testing successfully there
2015-09-17 23:12:26 -07:00
Pranav K 7b433820b1 Changes per PR comments
Reformatting parameter identation
2015-09-17 15:42:58 -07:00
Pranav K a68d9e4cb1 Replace NotNullAttribute with thrown exceptions 2015-09-17 11:56:44 -07:00
Ryan Nowak 538cd9c191 Move less-commonly used types out of .Rendering 2015-09-16 23:52:29 -07:00
Ryan Nowak 046cb976b3 Move ActionResult classes back to main namespace 2015-09-16 21:42:31 -07:00
Pranav K 1c4614c219 Avoid allocating strings in DefaultViewLocationCache
Fixes #3135
2015-09-16 17:28:40 -07:00
Pranav K 00075520b4 Razor CompilerCache allocates too much in NormalizePath
Fixes #3035
2015-09-16 16:55:51 -07:00
Ryan Nowak 9a15b54d30 Flow IHtmlContent through to the razor buffer 2015-09-16 16:17:40 -07:00
Ryan Nowak a707311d9e Fix #3087 - use IHtmlContentBuilder in TagBuilder
Improves authoring experience when using TagBuilder by taking advantage of
IHtmlContentBuilder an its extension methods.

TagBuilder.InnerHtml is no longer settable.
2015-09-16 10:03:03 -07:00
Pranav K 887ab64d75 Throw an exception if layouts have circular references.
Fixes #3100
2015-09-14 12:57:06 -07:00
Doug Bunting 29a25b2ed1 No need to add an instance in `WebApiCompatShimMvcBuilderExtensions`
- DI has changed since this class was written
2015-09-13 22:25:04 -07:00
N. Taylor Mullen 93735a5be6 React to Razor `TargetElementAttribute` rename.
aspnet/Razor#516
2015-09-13 19:14:30 -07:00
Ryan Nowak 94388a8804 React to BufferedHtmlContent changes 2015-09-13 13:51:53 -07:00
Pranav K 85bb33a62a Fixing formatting in RoslynCompilationService 2015-09-11 12:22:34 -07:00
Pranav K 345021d822 Set RazorError code to null 2015-09-11 12:08:23 -07:00
Pranav K bc10a17107 Reacting to DNX changes 2015-09-10 17:51:59 -07:00
Pranav K 0350f6ed48 Adding NeutralResourcesLanguageAttribute to Mvc assemblies 2015-09-10 16:17:42 -07:00
Shannon Deminick 87c15bb6dc Adds/updates some docs for the FromServicesAttribute with examples 2015-09-10 08:03:50 -07:00
Pranav K 2e32ffc004 Use PrecompilationTagHelperTypeResolver to locate TagHelpers during
precompilation.

Fixes #2298
2015-09-09 18:25:11 -07:00
KevinDockx 894574d04e Implement Replace Move and Copy for dynamic objects 2015-09-08 22:09:44 -07:00
Pranav K 67eb16dc67 Fixing RazorViewEngine formatting 2015-09-08 15:52:53 -07:00
Pranav K 1c8f22058c Make RazorViewEngine.GetNormalizedRouteValue public
Fixes #3108
2015-09-08 15:41:44 -07:00
Ryan Nowak a6aaef0d63 Optimize async code in model binders
Optimize the 'no-op' path for our model binders to return a cached task
where possible without going async.
2015-09-08 09:42:34 -07:00
Ryan Nowak ab08e27a4b Simplify CompositeModelBinder
Also adds a diagnostic ToString to ModelBindingResult to make testing
easier.
2015-09-08 08:47:21 -07:00
Ryan Nowak 382c9ab86a Test Cleanup: Fix Assert.NotNulls with ModelBindingResult 2015-09-07 17:15:31 -07:00
Ryan Nowak 465b4ce0df Use TelemetrySource 2015-09-06 20:23:05 -07:00
Ryan Nowak 5afadf6998 Fix documentation error 2015-09-03 17:11:47 -07:00
Ryan Nowak 076ce6a8a1 Make ModelBindingResult a struct. 2015-09-03 12:52:50 -07:00
Hao Kung e4fe31a602 Nuke extra curly 2015-09-02 21:21:41 -07:00
Hao Kung a786eaa9e4 Resolve merge issue 2015-09-02 21:10:43 -07:00
Hao Kung 76dceaef76 Fix build breaks 2015-09-02 16:22:02 -07:00
Hao Kung bc2bce8bd6 Curly's are important 2015-09-02 16:14:25 -07:00
N. Taylor Mullen 1d865afe7f React to Razor error length change.
aspnet/Razor#386
2015-09-02 15:38:18 -07:00
Hao Kung 8e57fa5350 React to options 2015-09-02 15:07:16 -07:00
Hao Kung 3ebdcc5f6f React to options changes 2015-09-02 14:07:06 -07:00
Sebastien Ros dd94d54e1d [Fixes #2929] Moving IsLocalUrl implementation to UrlHelper 2015-09-02 09:30:26 -07:00
Kiran Challa a0e0df87de [Fixes #3016] Disable response buffering in places where the content is already built/available 2015-09-02 09:22:36 -07:00
Kirthi Krishnamraju 7a3f34089f fix build break due to dnx resource change 2015-09-01 23:31:09 -07:00
Ryan Nowak 229724c4ea Reorganize MVC namespaces 2015-09-01 22:28:33 -07:00
Daniel Lo Nigro a2e53e8d1a Explicitly check if URI is file when checking for an absolute URI 2015-09-01 16:33:00 -07:00
Ben Adams 55fc7ded36 Don't invoke async state machine unnecessarily
Return task rather than awaiting when no extra work needs to be done
after await
2015-08-31 17:48:57 -07:00
Ryan Nowak 98b3f055e1 Change ModelBinding to use a single pass 2015-08-31 11:58:53 -07:00
Pranav K 8a33972c09 RazorViewEngine should cache transformed paths when view cannot be found
Fixes #3034
2015-08-31 10:36:57 -07:00
Kiran Challa e12d44b40a [Fixes #2900] Get rid of manual body-read-state-tracking 2015-08-31 10:34:42 -07:00
Chris R dd737ce946 Use new HttpContext.Features API. 2015-08-31 09:19:14 -07:00
Ryan Nowak dadee80aa8 Add FieldName to model binding context
Adds a new property, FieldName, to ModelBindingContext. The FieldName is
the name of whatever code-element is being bound, regardless of what
model-prefix is in use.

This is needed for cases like the Header model binder. We always want to
use the property/parameter name and we don't care about model prefixes.
2015-08-31 08:10:03 -07:00
Chris R e0e2ff6825 Fix doc comment error. 2015-08-30 19:43:51 -07:00
Chris R f2db0d1483 React to string[] -> StringValues changes. 2015-08-28 16:36:19 -07:00
Pranav K a2d58ba4ea Reacting to globbing changes 2015-08-28 12:50:29 -07:00
Ajay Bhargav Baaskaran 4fbaea2463 [Fixes #2931] AttributeRoute does not replace existing route values with null 2015-08-28 11:11:03 -07:00
Pranav K c0d4981452 * Avoid lazyily evaluating IRazorCompilationService in
VirtualPathRazorPageFactory
* Cleanup comments on the lifetime of Razor services.
2015-08-27 17:08:18 -07:00
sornaks ddc74e5396 Issue #2727 - Introducing PhysicalFilePathResult and VirtualFilePathResult instead of FilePathResult to handle app and physical file system paths separately. 2015-08-27 10:23:23 -07:00
Ryan Nowak d74e81186b Use a copy on write list for items in Resource Filters
We allocate a separate list for model-binding related objects when we
create the resource filter contexts, and these lists then live the
lifetime of the request. These *may* be modified by user code in
filters as a supported feature, but rarely are changed in practice.

This change adds a simple CopyOnWriteList implementation to reduce the
amount of copying that's actually done.
2015-08-26 13:29:38 -07:00
Pranav K 6615972162 Adding System.Text.Encoding to project.json to unblock CI 2015-08-26 10:11:27 -07:00
N. Taylor Mullen cc5c0d6cbe Update `HelperResult` to take in an async func.
- The corresponding Razor change results in `HelperResult`s being rendered with async lambdas.
- This change enables `TagHelper`s and other async code to exist inside of `HelperResult` blocks.
- Added test to validate Templates (they generate `HelperResult`s) can utilize `TagHelper`s correctly.
- Rename `RazorPage`s `RenderBodyDelegate` to `RenderBodyDelegateAsync`.

aspnet/Razor#494
2015-08-25 22:37:17 -07:00
Pranav K 3041dee86d Modify RazorPreCompileModule to use an instance of memory cache specific
to the application's target framework and configuration.
2015-08-25 22:26:16 -07:00
Pranav K 44b45f3b1f Move RazorPreCompileModule.cs to Razor.Precompilation 2015-08-25 14:33:13 -07:00
Pranav K 1bad8ce6d1 Ensure that assembly path is specified in Roslyn MetadataReference. 2015-08-25 12:56:23 -07:00
Doug Bunting 829a5c9046 Expand model types `GenericModelBinder` can handle
- #2993
- use `ClosedGenericMatcher` to handle e.g. non-generic model types implementing requested interfaces
- reduce `IsAssignableFrom()` use since created binders use explicit casts i.e. handle explicit implementations
- also add more integration tests covering various collection key formats, some with validation errors
  - merge a few `[Fact]`s into `[Theory]`s
2015-08-25 09:50:31 -07:00
Ryan Nowak cfd9bfe13b [PERF] Remove extra ModelStateDictionary allocations
The copy constructor is chaining to the wrong constructor. This results in
an extra 8 allocations of ModelStateDictionary per-request. All of the
various filter contexts inherit from ActionContext, that's how you get the
8 extras.

Small problem but easy fix.
2015-08-24 15:26:09 -07:00
KevinDockx 054b46c1cc Implement new Remove op & fix value.GetTypê issue in Add op 2015-08-24 12:32:41 -07:00
Doug Bunting bf7e0f141e Add `IsReferenceOrNullableType` and `UnderlyingOrModelType` to `ModelMetadata`
- #2992
- use new properties to replace common helper methods
- still a few `Nullable.GetUnderlyingType()` calls
  - creating `ModelMetadata` or sites lacking `ModelMetadata` access e.g. `ModelBindingHelper.ConvertTo()`
2015-08-24 12:26:50 -07:00
Ajay Bhargav Baaskaran 0beb39ec1c [Fixes #2947] Default ContentType is not set when user specified Response.ContentType exists 2015-08-24 12:17:18 -07:00
Ryan Nowak 1596cd9422 Fix #2527 - Remove FormCollection use
This removes the dependency on Microsoft.AspNet.Http from the Mvc.Core
code. Added the reference back to tests where needed (DefaultHttpContext).
2015-08-24 11:09:30 -07:00
Doug Bunting a045324d3a Do not include compiler-generated names in expression names
- #2890
- add lots of `ExpressionHelper` tests using `IdFor()` and `NameFor()` (which are thin veneers)
2015-08-23 14:22:49 -07:00
Doug Bunting 8babf2b380 Change in-box tag helpers to use `DefaultFrameworkSortOrder`
- #2905
- override `Order` implementation inherited from `TagHelper`
- only exception is `UrlResolutionTagHelper` which already overrides `Order` to execute much earlier
2015-08-22 15:32:02 -07:00
Ryan Nowak 4a7ada5f64 Make IValueProvider sync, IValueProviderFactory async 2015-08-21 14:58:55 -07:00
Ryan Nowak 6d365e9a32 Make ValueProviderResult a string-ish struct 2015-08-21 11:02:40 -07:00
Doug Bunting 02cc82a055 PR comments commit 2015-08-21 10:45:43 -07:00
Doug Bunting 070be7b656 Make validation in `TryUpdateModelAsync()` consistent with model binding elsewhere
- #2941
- honor `ModelBindingResult.IsModelSet` and use `ModelBindingResult.ValidationNode`
  - enable correct validation of collections or after model binding falls back to the empty prefix
  - code previously matched `Controller.TryValidateModel()`; less context available in that case
2015-08-21 08:17:19 -07:00
Ryan Nowak b5c9d905d9 Fix #2986 - Make ModelMetadata getters null-safe 2015-08-21 07:58:02 -07:00
N. Taylor Mullen c3e2e6fa0a Change Script, Link and Image `TagHelper`s to work better with other `TagHelper`s.
- `ScriptTagHelper`, `LinkTagHelper` and `ImageTagHelper` now default to using `output.Attributes["href|src"]` if it's present when they run. This enables other `TagHelper`s to run prior and add those attributes.
- Added unit tests to validate this behavior.
- Updated `ImageTagHelper` functional test resources. Now that we're always defaulting to `output.Attributes["src"]` for `ImageTagHelper.Src` we're properly copying attributes back into the `output.Attributes` collection in the correct order (isntead of appending to the end).

#2902
2015-08-20 20:41:28 -07:00
Pranav K 05226a4a55 Refactor ICompilerCache to be instantiated via ICompilerCacheProvider
Fixes #2933
2015-08-20 10:54:32 -07:00
Ryan Nowak e61ebca116 Fix #2996 - Make InnerAttribute logs Verbose 2015-08-19 15:33:14 -07:00
N. Taylor Mullen f1eefdb650 Enable `CopyHtmlAttribute` to maintain copied attribute order.
- Updated implementation to do a best guess at copying an attribute back into `TagHelperOutput.Attributes`.
- Updated existing functional and unit tests to account for maintained attribute order.
- Added a set of complex order based unit tests to validate `CopyHtmlAttribute` properly maintains order.

#2639
2015-08-19 14:58:00 -07:00
N. Taylor Mullen b871172dd0 Expose locations of `_ViewImports.cshtml` that affect a given Razor file.
- Added `ChunkTreeResult` to associate inherited chunks with a specific source file.
- Updated existing tests to validate file path.

#2256
2015-08-19 12:12:52 -07:00
David Fowler 485e6e5ee8 React to dnx refactoring changes
- Use compilation options from the Compilation itself
- Get the parse options from the first syntax tree
- Get the build time IAssemblyLoadContext directly
2015-08-19 03:04:10 -07:00
Doug Bunting f10a071da3 Preserve `ViewDataDictionary.ModelType` for `Nullable<T>` properties when `Model` is non-`null`
- #2539
- reuse `ModelMetadata` and occasionally `ModelExplorer` when `ModelType` is `Nullable<T>`
2015-08-18 10:33:40 -07:00
Doug Bunting 48f09d0e8d Do not trounce existing property values that are not bound in `TryUpdateModel` scenarios
- #2836

Part 1: Use existing property values when recursing in `MutableObjectModelBinder`
- remove `ComplexModelDTO` because that indirection made fixing this issue more difficult and doesn't add value
  - started with an old closed PR (#2241) which did some of this work
- correct `MutableObjectModelBinderTest` tests that exercised behaviour that can't occur
  - the old `dto.Results` dictionary was never incomplete; nor could it contain `null` values

Part 2: Change `MutableObjectModelBinder` to pass complex property values into binding system
- model binding no longer trounces nodes in the model tree that aren't bound
- create model instances less often in `TryUpdateModel` scenarios
  - refactor `EnsureModel()` to `GetModel()` and use appropriately
- reorder logic in `SetProperty()` and `AddToProperty()` to avoid copying to / from the same collection
  - also cleans up some code duplication

nits:
- clean up `MutableObjectModelBinderTest`
  - fix odd line wrappings and indentation
  - use `nameof()` more
  - use `string.Empty` more
  - simplify a couple of `Returns()` expressions
- make assertions in `TryUpdateModelIntegrationTest` more readable
  - no need to work through `ModelStateDictionary.Keys`
  - also use `Length` instead of `Count()`; test code but we don't need Linq at all in that test class
2015-08-18 09:57:41 -07:00
Ryan Nowak 9d89a8cac3 Homogenize MVC startup code patterns
Use builder APIS for both AddMvc() and AddMvcCore()
Change various API patterns to all use .AddXyz(...) off of one or both of
these builders.
2015-08-16 18:48:24 -07:00
Ryan Nowak e384938425 Add more event notification data points
Also includes some cleanup of the testing code that we're using with
proxies.
2015-08-16 16:42:58 -07:00
Ryan Nowak 07fabde92a Part 3 of #2776 - revert a6ce9abab1 and add
some more tests.

This change reverts the behavior change from
a6ce9abab1 and adds more tests around the
scneario that was actually broken.

The right behavior is that unconvertable values result in a validation
error. There's no special behavior around value types and required values.
2015-08-16 16:20:44 -07:00
N. Taylor Mullen e73e73acdd Add `srcset` to list of application relative resolvable URLs.
- Now allow the attribute to exist on `img` and `source` tags.
- Updated existing `UrlResolutionTagHelper` functional test to validate `srcset` attribute.

#2964
2015-08-14 15:58:02 -07:00
Ajay Bhargav Baaskaran 6fe5045c55 React to aspnet/Razor#488 2015-08-14 13:00:39 -07:00
sornaks f2540f9ba1 Making TagBuilder implement IHtmlContent and removing ToHtmlContent.
- Making TagRenderMode a property in TagBuilder.
- Modifying places where TagBuilder is used to suit the new model.
- This reduces space occupied by a normal application by 11.8%.
2015-08-14 10:58:51 -07:00
Pranav K 93d07147b2 ViewViewComponentResult doesn't handle `~/` in view paths correctly
Fixes #2856
2015-08-14 09:53:36 -07:00
Ajay Bhargav Baaskaran 4295a57504 [Fixes #2817] Support client side validation for all numeric types 2015-08-13 17:32:13 -07:00
Ryan Nowak 7aa5967cd4 Fix #2859 - Correct UrlHelper for special tokens
This change restores a link generation behavior from MVC5 and earlier
where 'action' and 'controller' values are special cased-when using
Url.Action(...).

The change is that in-effect 'action' and 'controller' are always included
in the route values given to the routing system. Passing a null value into
the Url.Action(...) method means that the ambient value for that token
should be used explicitly. This means that the 'action' and 'controller'
tokens become sticky, even when something to the lexical left in the URL
(like area) changes.
2015-08-13 17:04:21 -07:00
N. Taylor Mullen 21d96eb16a Enabled `LinkTagHelper` to be written in the void format.
- Updated existing tests to showcase it can be written as just the start tag.
2015-08-13 16:19:30 -07:00
N. Taylor Mullen e1572f98ce Added `InputTagHelper` `TagRenderingMode` modificaitons to react to `output.TagMode`. 2015-08-13 16:19:29 -07:00
N. Taylor Mullen 1b51f6bca6 Enable input, image and url resolution `TagHelper`s to be written as void elements.
- Razor rendering now understands `TagMode` which allows void elements to be rendered.
- Added a `TagStructure.WithoutEnd` bit to `InputTagHelper`, `ImageTagHelper` and `UrlResolutionTagHelper`. This will allow users to write the various elements in the void format. Used the HTML5 spec to determine the elements appropriate.
- Added tests to ensure `TagMode.StartTagOnly` is rendered properly.
- Updated a few functional tests to showcase the void element formats.

aspnet/Razor#450
2015-08-13 16:19:28 -07:00
Ryan Nowak 89a8d0e36c Remove IScopedInstance - use AsyncLocal for ActionContext and
ActionBindingContext

This change replaces IScopedInstance<T> in favor or IActionContextAccessor
and IActionBindingContextAccessor. In the spirit of IHttpContextAccessor,
these are both singletons which use AsyncLocal for storage.

This change allows the invoker factory to be cached which results in some
significant perf gains.
2015-08-13 15:58:29 -07:00
Ryan Nowak a6ce9abab1 Fix #2776 - Add implicit [BindRequired] for value type properties 2015-08-13 15:35:54 -07:00
Pranav K 9a5ebf1497 Use NonDisposableStream instead of using MemoryStream.ToArray() 2015-08-13 11:16:21 -07:00
Alxandr 39ab9badde Make sure references are readable multiple times 2015-08-13 11:16:20 -07:00
Pranav K c631d533c4 * Refactoring RazorFileInfoCollectionGenerator to not be instantiated.
* Adding CompilerGeneratedAttribute to generated code.
* Adding unit tests for RazorFileInfoCollectionGenerator.
2015-08-13 11:15:46 -07:00
Andrew Stanton-Nurse 3c322b4a06 react to DNX renames 2015-08-12 15:12:36 -07:00
Ryan Nowak 12ceb6ae1c React to DI namespace change part 3. 2015-08-11 15:44:47 -07:00
Ryan Nowak a1a6be06b6 React to namespace change in DI part 2. 2015-08-11 14:30:07 -07:00
Ryan Nowak f7cea9b6d7 React to namespace change in DI. 2015-08-11 14:10:30 -07:00
Ryan Nowak 3ad3f88d69 Fix MVC build break due to deleted package 2015-08-11 12:21:01 -07:00
Chris R 77865ca314 #2939 React to CoreCLR Cryptography package changes. 2015-08-11 11:00:14 -07:00
Doug Bunting 9fc3d25bfc Fix build break: Missing a recently-added parameter 2015-08-11 09:03:51 -07:00
Doug Bunting 83a559c28c Add `ModelValidationNode`s consistently
- #2633
- do not leave `ModelBindingResult.ValidationNode` as `null` when we hit the `null` `RawValue` special case
 - move two bits of code together to make the special case more obvious
- add `ModelValidationNode` (that suppresses validation) when `HttpRequestMessageModelBinder` is successful
 - also suppress validation of `HttpRequestMEssage` properties
- suppress validation in `CancellationTokenModelBinder`, `FormCollectionModelBinder`, `FormCollectionModelBinder`
- do not create a `ModelValidationNode` when validation fails in `TypeConverterModelBinder`

nits:
- improve some doc comments
- add a quick `HttpRequestMessageModelBinderTest`
2015-08-11 08:30:29 -07:00
Doug Bunting d45e2ee3f5 Handle broader range of collection types in model binding
- #2793
- add `ICollectionModelBinder`, allowing `GenericModelBinder` to call `CreateEmptyCollection()`
- adjust `CollectionModelBinder` and `DictionaryModelBinder` to activate model if default types are incompatible
 - do not create default (empty) top-level collection in fallback case if Model already non-`null`
- change type checks in `GenericModelBinder` to align with `CollectionModelBinder` capabilities
 - add special case for `IEnumerable<T>`
- correct `ModelMetadata` of a few tests that previously did not need that information
2015-08-11 08:26:49 -07:00
sornaks b6a109e2a3 Making DefaultDisplayTemplates and DefaultEditorTemplates use IHtmlContent.
- Making TagBuilder's InnerHtml an IHtmlContent.
- Delay encoding until the content is written.
- Moving BufferedHtmlContent to Common cos it is used in aspnet/Razor also.
- Changing GenerateOption to take in a string and create StringHtmlContent.
- This reduces the space used by around 13%.
2015-08-10 14:55:34 -07:00
N. Taylor Mullen a0da6ec19f Add `AddHtmlAttributeValues` for `TagHelper`s.
- Refactored `WriteAttributeTo` to allow re-use of some of the core attribute writing logic. The refactoring was based on removing the `Begin`/`EndContext` for instrumentation bits which isn't valid in a `TagHelper` attribute scenario.
- Added unit tests to validate attributes are properly added to `TagHelperExecutionContext`.
- Added functional test to validate everything is output as expected with dynamic attributes (encoded and non-encoded).

aspnet/Razor#247
2015-08-10 12:06:02 -07:00
Ryan Nowak ff6cbfd7cf Make saving TempData operate via a filter
This change moves the responsibility for saving TempData into a filter,
which is registered with other View features. This moves TempData into the
ViewFeatures package.

ActionResults which require TempData to be kept use a new marker interface
which is handled by the filter.
2015-08-07 16:53:11 -07:00
Ajay Bhargav Baaskaran b5237b29b5 [Fixes #2896] Made UrlHelper.Content behavior consistent with MVC 5 2015-08-07 16:40:23 -07:00
KevinDockx 94fad918a3 Replace of Add operation (jsonpatch dynamic support) 2015-08-07 16:10:07 -07:00
Pranav K 91bbfe949c * Cleaning up unused types in Razor precompilation. 2015-08-07 11:09:11 -07:00
Pranav K dfacd2543b * Remove support for updateable precompiled views.
* Allow precompiled views to be served when source file does not exist in
  file system.
* Cache results for views that do not exist on disk.

Fixes #2462 and fixes #2796.
Partially addresses #2551
2015-08-07 11:08:48 -07:00
Ryan Nowak 152e4ef915 Fix #2874 part 2 - Add AddLocalization() overload for MVC localization. 2015-08-07 09:49:08 -07:00
Ryan Nowak 4b3bac9dbb Fix #2874 part 1 - XML formatter support for IMvcBuilder 2015-08-07 08:26:27 -07:00
Ajay Bhargav Baaskaran fcad4c5c57 [Fixes #2841] Support comma separated globbed include and exclude pattern in Script and Link tag helpers 2015-08-06 16:55:12 -07:00
Doug Bunting ed4896d1fd Support `[Display(Name = "")]` on enum values
- #2851
2015-08-06 16:07:50 -07:00
Doug Bunting 4a813773d0 Make `CompositeValueProvider` consistent with `IBindingSourceValueProvider` contract
- #2907
- return `null` if `Filter()` finds no matching value provider in collection
- fix lack of defensiveness in model binders' use of `IBindingSourceValueProvider` implementations
- remove test workaround for unusual `CompositeValueProvider` behaviour
2015-08-06 16:05:13 -07:00
sornaks 1aef84b50d Issue #2745 - ViewHierarchyUtility.GetHierarchicalPath does not handle root paths *nix file systems.
Fix: It is not necessary to check for root paths in this place because ViewHierarchyUtility.GetHierarchicalPath is always called with a relative path. Hence removing the check.
2015-08-06 10:31:11 -07:00
Doug Bunting bda850187d Add support for jQuery syntax in form data
- #2705
- add `JQueryFormValueProvider` and `JQueryFormValueProviderFactory`
  - carry some code forward from MVC 5; correct to follow current coding guidelines
- refactor `ReadableStringCollectionValueProviderTest` into abstract `EnumerableValueProviderTest`
  - enables reuse in new `JQueryFormValueProviderTest`
  - also run these tests in `CompositeValueProviderTest`

nits:
- do not create a duplicate `CompositeValueProvider` instance in `Filter()`
- correct garbled sentence in `IBindingSourceValueProvider` doc comments
- simplify `FormValueProviderFactoryTest` (no need for Moq) and correct test name
- correct test class / file names
  - `CompositeValueProviderTests` -> `CompositeValueProviderTest`
  - `FormValueProviderFactoryTests` -> `FormValueProviderFactoryTest`
2015-08-05 10:31:24 -07:00
Troy Dai a7d717d19c Update CoreCLR versions 2015-08-05 09:35:37 -07:00
N. Taylor Mullen 0ef68eefc8 Added default `UrlResolutionTagHelper` to resolve app relative URLs.
- Razor removed the ability to automatically resolve URLs prefixed with `~/`; therefore `ScriptTagHelper`, `LinkTagHelper` and `ImageTagHelper` have changed to take in `IUrlHelper`s and auto-resolve their URL based properties if they start with `~/`.
- Added a catch-all `~/` resolver for non `TagHelper` based HTML elements. Razor used to resolve any attribute value that started with `~/` now the behavior is restricted to attributes that can contain URLs.
- Updated `IUrlHelper` to accept `null` values.
- Added functional tests to validate that URLs resolve correctly.
- Updated `TagHelper` tests to ensure that URLs are resolved via an `IUrlHelper`.

#2807
2015-08-03 16:00:33 -07:00
N. Taylor Mullen 6d228a62dc Added missing `HtmlAttributeNotBound` to `ViewContext` property.
- Did not add a test to validate the behavior. None of the other `TagHelper`s validate that a property is not visible/bound.

#2901
2015-08-03 15:05:08 -07:00
Ajay Bhargav Baaskaran 2792f10f9a [Fixes #2862] asp-append-version now works with urls containing fragment 2015-08-03 12:06:18 -07:00
Ryan Nowak 68c52adef4 Fix #2837 - Make it easier to get ParameterInfo/PropertyInfo
For a typical configuration, it's now possible to cast a parameter
descriptor to ControllerParameterDescriptor or
ControllerBoundPropertyDescriptor to access the corresponding reflection
type.
2015-08-03 10:53:33 -07:00
N. Taylor Mullen c8df81ef91 React to aspnet/Razor#459. 2015-07-31 15:47:29 -07:00
Pranav K e0abf70a80 Reacting to DI changes 2015-07-31 14:32:32 -07:00
Victor Hurdugaci 84192cb1a9 Fix the casing of a pacakge reference. It is causing cross plat issues 2015-07-30 11:39:28 -07:00
Ajay Bhargav Baaskaran e4049c07eb Razor boolean and null attribute special case handled correctly
- Issue #2769
 - Special case is only applied to null and bool value with no surrounding
   whitespace
2015-07-30 10:37:38 -07:00
Pranav K 7120b2ff92 Removing MvcViewEngineDescriptor and switching to use OptionsSetup to
setup RazorViewEngine.

Fixes #2269
2015-07-29 14:14:07 -07:00
Victor Hurdugaci e96b4d7b94 React to DNX renames 2015-07-29 04:49:49 -07:00
Kiran Challa 06c8c79a0b Added repository information to Localization project 2015-07-27 11:13:59 -07:00
Doug Bunting 6106375306 Add `HttpOkResult`, `HttpOkObjectResult`, and `Ok()` methods in `Controller`
- #2825
- new class names align with existing types such as `HttpNotFoundResult` and `HttpNotFoundObjectResult`
- remove similar types from WebApiCompatShim and use replacements in `ApiController`
 - `NegotiatedContentResult<T>` remains because Core doesn't have an exact replacement

nits:
- add missing periods in some `Controller` doc comments
2015-07-23 18:49:36 -07:00
Ryan Nowak e91ce4560f Fix #2338 - Add ViewComponentResult
Makes it easier to render a view component from inside a controller. This
makes it possible to implement behavior where an ajax request refreshes
part of a page.
2015-07-23 17:52:52 -07:00
Ajay Bhargav Baaskaran 67474d8cbc [Fixes #2382] Use PostElement in Script and Link tag helpers 2015-07-23 10:52:57 -07:00
Ryan Nowak 5ae6d029ce Update designer file 2015-07-22 15:25:47 -07:00
Ryan Nowak bae442cf48 Fix for #2799 - OOM during TryUpdateModelAsync
The change here is that when we create the ModelValidationNodes to just
return them rather than adding them to the tree. For a very large model,
having these extra nodes in the tree would eventually cause an OOM.

We're going to be taking a more thorough look at this code separately,
hence the quick fix.
2015-07-22 08:37:16 -07:00
Andrew Stanton-Nurse 0f20eb9112 fix xml docs 2015-07-21 17:45:50 -07:00
Andrew Stanton-Nurse 991dff6b9e react to DNX renames 2015-07-21 17:23:06 -07:00
Tugberk Ugurlu 81f8b3edfb removed packExclude from unnecessary places, replaced it with
publishExclude and removed kproj and xproj excludes
2015-07-20 16:49:59 -07:00
Doug Bunting 79a2982441 Add support for model binding dictionaries from `prefix[name]=value` entries
- #1418
- add new fallback binding in `DictionaryModelBinder`
 - similar to MVC 5 approach but more explicit and with better key conversion support
- fix bugs in `PrefixContainer` encountered while adding new tests of #1418 scenarios
 - did not handle entries like "[key]" or "prefix.key[index]" correctly
 - refactor part of `GetKeyFromEmptyPrefix()` into `IndexOfDelimiter()`; share with `GetKeyFromNonEmptyPrefix()`
 - extend `ReadableStringCollectionValueProviderTest` to cover bracketed key segments

nits:
- remove use of "foo", "bar", and "baz" in affected test classes
- `""` -> `string.Empty`
- `vpResult` -> `result`
2015-07-20 16:33:35 -07:00
Doug Bunting 6033679193 Cleanup .xproj files to avoid future churn
- mostly remove useless `<RootNamespace>` elements
2015-07-17 09:07:23 -07:00
Kirthi Krishnamraju d06dcbc996 Merge branch 'release' into dev 2015-07-16 16:09:29 -07:00
Kirthi Krishnamraju d8a523a07f Added Mvc localization project 2015-07-16 15:57:24 -07:00
Ajay Bhargav Baaskaran 8039ebc7d1 Merge branch 'release' into dev 2015-07-16 15:55:15 -07:00
Ajay Bhargav Baaskaran 92f3e21fe6 Fix: Metadata ignored for non model-specific EditorTemplate
Issue - #2778
2015-07-16 15:48:01 -07:00
Ajay Bhargav Baaskaran c6302ff026 Merge branch 'release' into dev 2015-07-16 15:45:56 -07:00
Ajay Bhargav Baaskaran 6210de95e3 Fix regression from previous commit 2015-07-16 13:00:44 -07:00
Mugdha Kulkarni a6a7903b84 2721: Fixing the error message for empty html field name 2015-07-16 12:37:18 -07:00
Ryan Nowak 6170ac1924 Add an event notification for when the action is invoked 2015-07-16 11:10:45 -07:00
KevinDockx bbc059a689 Some more JsonPatch refactoring for non-generics
- Add Apply to non-generic Operation (used by non-generic JsonPatchDocument)
- Add non-generic JsonPatchDocument
2015-07-14 16:54:13 -07:00
Ajay Bhargav Baaskaran baee4a0661 [Fixes #2780] Use type=text for float and double 2015-07-14 15:32:25 -07:00
Hao Kung bf1b188e9f React to Http rename 2015-07-13 12:31:15 -07:00
sornaks 52af452a08 Fixing XML docs. 2015-07-10 16:48:36 -07:00
sornaks a02082397a Introducing IHtmlContent in Mvc.Razor.
- Changing HtmlHelper and HelperResult to implement IHtmlContent.
- Introducing BufferedHtmlContent.
- Making RazorPage handle only IHtmlContent and clearing out other types.
- Making StringCollectionTextWriter use BufferedHtmlContent so that it can be returned where necessary.
- Updating places which involve Write/Copy to pass in encoders.
- The encoders are currently not being used during write. But when HtmlString is modified to carry encode metadata, the encoder can be used for writing. This is a perf optimization and hence not a part of this change.
- Making TagHelperContent implement IHtmlContent.
2015-07-10 16:24:32 -07:00
Mugdha Kulkarni 933a13608f Adding fix for 2756 and test cases. Skipping the test cases for 2793. 2015-07-10 15:58:36 -07:00
Ryan Nowak 35ee0e3a49 Fix for #2739
This change removes the validation that forces an OutputFormatter to set
an encoding, so that you can use the OutputFormatter base class for
non-text.

The check that we had would pretty much only be hit when you
didn't have any SupportedEncodings. If you have anything in
SupportedEncodings, then one of them will be picked as a default. So
removing the check is to do, because for a text-based formatter you'd
never run into this issue in the first place.
2015-07-10 12:01:57 -07:00
Mugdha Kulkarni 8cb2aae4f5 fixing 2704 -- Rename LanguageViewLocationExpanderOption to LanguageViewLocationExpanderFormat 2015-07-09 15:38:11 -07:00
Ryan Nowak 48bfdceea6 Add basic startup experience for MVC.Core 2015-07-08 17:16:07 -07:00
Ryan Nowak fe52c0c0cb React to removal of Authentication 2015-07-08 15:52:17 -07:00
KevinDockx 580914d873 Refactoring to get ready for JsonPatch (for dynamics) support. Relay generic typing to outer-facing contract. 2015-07-08 15:06:32 -07:00
Hao Kung 46bc7dd219 Switch to shared security helper 2015-07-08 15:02:11 -07:00
Ryan Nowak ccb2f2deda React to move of StatusCodes 2015-07-08 12:43:33 -07:00
Ryan Nowak e985fa5d42 Split up MVC.Extensions into smaller packages
Startup.cs API experience to follow in a separate change. This change just
gets the bulk of the code churn out of the way.
2015-07-06 23:41:22 -07:00
Ryan Nowak 950b8b41a8 Rename IFilter -> IFilterMetadata 2015-07-06 23:40:43 -07:00
sornaks 57f1ae755f Optimizing TagBuilder.CreateSanitizedId to create buffer only when needed.
- Tested with a page containing 33% of invalid Ids which go through TagBuilder.CreateSanitizedId.
- Ran 10,000 requests with 20 in parallel and measured perf.
- Data before the change:
System.String allocated by CreateSanitizedId: 1.84 mb
System.Text.StringBuilder allocated by CreateSanitizedId: 1.68 mb
- Data after the change:
System.String allocated by CreateSanitizedId: 0.720 mb
System.Text.StringBuilder allocated by CreateSanitizedId: 0.560 mb

Around 60% improvement from the original case.
2015-07-06 17:19:38 -07:00
Eilon Lipton 4b18bfb494 Rename builder extension types to have more specific names 2015-07-06 16:35:44 -07:00
N. Taylor Mullen fc2019c973 Modify `TypeConverterModelBinder`'s `ModelBindingResult.IsModelSet` to be false when model value is `null` for non-null accepting types.
- Previously `ModelBindingResult.IsModelSet` would be set to true if type conversions resulted in empty => `null` values for ValueTypes. This resulted in improper usage of `ModelBindingResult`s creating null ref exceptions in certain cases.
- Updated existing functional test to account for new behavior. Previously it was handling the null ref exception by stating that errors were simply invalid; now we can provide a more distinct error.
- Added unit test to validate `TypeConverterModelBinder` does what it's supposed to when conversions result in null values.
- Added additional integration tests for `TypeConverterModelBinder`.

#2720
2015-07-02 20:03:32 -07:00
sornaks 7606c81482 Renaming - file case. 2015-07-02 14:20:10 -07:00
Kirthi Krishnamraju 38748b54eb [JsonPatch]: Added NotNull attribute to parameters and updated comments 2015-07-02 12:19:38 -07:00
Victor Hurdugaci c2952f26fa Add repository information to project files 2015-07-01 20:18:53 -07:00
Hao Kung ec582d4512 React to security changes 2015-07-01 12:54:09 -07:00
Kiran Challa 406a3853af React to newly added api MediaTypeHeaderValue.Clone() #2569 2015-06-30 15:40:34 -07:00
Ajay Bhargav Baaskaran d2d4d1d1d3 [Fixes #2715] Using default SerializerSettings from MvcJsonOptions 2015-06-30 14:49:42 -07:00
Ajay Bhargav Baaskaran 6213354b85 Fixes for FileVersionProvider
- Path with query string works
 - No exception is thrown for absolute path
2015-06-30 11:25:32 -07:00
Hao Kung 7c426f7835 React to Http/AuthNZ changes 2015-06-25 17:30:09 -07:00
Ajay Bhargav Baaskaran a3cbb1f378 [Fixes #2684] Removed Mvc.Common
- Removed TaskHelper and refactored with ClosedGenericMatcher
 - Removed TypeHelper
 - Moved custom encodings to InputFormatter
 - Moved ObjectToDictionary to PropertyHelper
 - Removed respective tests and test projects
2015-06-25 16:02:07 -07:00
N. Taylor Mullen 02a3ca8abb React to aspnet/Razor#352.
- Moved initialization of TagHelperDescriptorResolver to be Lazy so DesignTimeMode can be set.
2015-06-25 15:50:19 -07:00
Ryan Nowak 2f554c4b29 Use new antiforgery package 2015-06-25 14:45:00 -07:00
Ajay Bhargav Baaskaran e2787b3b84 [Fixes #2715] Removed formatter dependency from JsonResult and JsonViewComponentResult 2015-06-25 14:09:32 -07:00
Ryan Nowak d2908e7b7b Tweak lifetimes for a few commonly resolved services
This is some low hanging fruit for reducing the number of resolves we have
per request.

DefaultHtmlGenerator: Lots of these are created by RazorPage. It needs
IUrlHelper, so scoped is the best we can do for now. For an example, on
the front page of our sample, 48 of these are created for each request.
48! This takes it down to 1-per-request.

JsonResult: Again, multiple created per request (12 for the sample). This
class is totally stateless, so we can get down to 0-per-request.

DefaultViewComponentInvokerFactory: Same story as JsonResult.

DefaultObjectValidator/MvcMarkerService/DefaultFilterProvider:
these are stateless and pretty much guaranteed to be used by every request.
Getting them off the table.
2015-06-25 12:52:15 -07:00
Ryan Nowak 08068a85be Make use of concise 'TryAdd***' overloads where possible 2015-06-25 12:08:58 -07:00
Ryan Nowak f055618c8c Update MVC Enumerable service registrations
Updates MVC service registration code to use the new TryAddEnumerable
overload (idempotence++).

Some other misc cleanup to improve idempotence.
2015-06-24 18:44:36 -07:00
Doug Bunting 37f056ce2b [quick fixes] Cleanup a few things StyleCop found ages ago
- was trying out rules matching frequest PR comments (then)
 - did a manual scan to find new instances of same issues
- "" -> `string.Empty`
- `String` -> `string` and similar
- fill empty XML doc elements
 - ignored `JsonPatchDocument<TModel>`; just too many empty elements
- corrected missing / extra / out-of-order `<param>` descriptions
 - `xml-docs-test` detects incorrect external references but not these local issues
2015-06-24 16:37:39 -07:00
Doug Bunting 9c63d1d842 Get tests working with `core.autocrlf=false`
- #1514
- refactor `RazorCompilationService` to allow a test subclass that normalizes Razor file line endings
 - add `TestRazorCompilationService` to `RazorPageExecutionInstrumentationWebSite`
 - adjust line endings to match in `RazorPageExecutionInstrumentationTest`
- add `ignoreLineEndingDifferences: true` to `Assert.Equal()` calls
 - responses on Windows can have a mix of line endings
  - `git config` setting affects line endings in .cshtml (and baseline) files
  - however MVC and Razor mix `Environment.NewLine`s into HTTP responses
- update `PrecompilationTest` to split response regardless of line endings
- update `ResourceFile` to normalize all source file streams to LF only
 - ensures consistent checksums and line mappings
 - change `MvcRazorHostTest` to expect new line mappings
 - recreate baseline files to expect new checksums and literal line endings
- use verbatim strings in affected tests
 - careful use of `Environment.NewLine` in expectations is now just noise

nits:
- add doc comments in `RazorCompilationService`
- correct `TagHelpersTest` name to match containing file
- avoid incorrect `using` removal when `GENERATE_BASELINES` is not defined
- remove unnecessary `ResourceFile` normalization of output files
2015-06-24 14:53:07 -07:00
Doug Bunting a170a4e1e4 Add `ModelBindingContext.IsFirstChanceBinding` and `IsTopLevelObject`
- cleanup duplicate code now that #2445 is fixed
- update unit tests using old `ModelBindingContext` setups
- fix (just) one integration test where `MutableObjectModelBinder` incorrectly calculated
  `isTopLevelObject` and returned a non-`null` model
- undo temporary changes in `BodyModelBinderTests` due to increased reliance on incorrect
  `isTopLevelObject` in #2445 fix

nits:
- combine tests that are now duplicates
- beef up coverage of some `MutableObjectModelBinderTest` cases
- remove unused `using`s
2015-06-24 09:17:29 -07:00
Doug Bunting 715a0b6021 Add `ModelState` entries for greedy and type-matching model binders
- part II of II for #2445
- `FormCollectionModelBinder` is an exception because container is not user-provided
 - no `ModelState` entry added
- enable tests that #2445 was blocking
 - fix these and other tests expecting different `ModelState` entries
- simplify logic in `FormFileModelBinder`

`ValueProviderResult`
- remove `protected` setters and parameterless constructor
 - no scenario for their use in subclasses; however `ConvertTo()` remains `virtual`
- add single-parameter constructor
 - use in most of the greedy and type-matching model binders
- add doc comments throughout class

nits:
- use new `ValueProviderResult` constructor in many existing tests
- `""` -> `string.Empty` and `vpr` -> `valueProviderResult` in `ValueProviderResultTest`
- improve some test names in `BodyValidationIntegrationTests`
- do not check `Message` of a Json.NET `Exception`
2015-06-23 22:34:55 -07:00
Ajay Bhargav Baaskaran 4a4b8ec87e Made JsonOutputFormatter consistent with JsonInputFormatter 2015-06-23 11:39:59 -07:00
Ajay Bhargav Baaskaran f206cf6759 Removed IJsonOutputFormatter 2015-06-23 11:39:53 -07:00
Ajay Bhargav Baaskaran 5632a33098 Removed unnecessary log statement 2015-06-23 11:12:06 -07:00
Doug Bunting c4fa402105 Add `ModelBindingResult.IsFatalError` and make body binding more consistent
- part I of II for #2445 (with a duplicate code PR to follow)
- needed for #2445 because new `ModelState` entries for values will make inconsisteny worse
- change `BodyModelBinder` to use same keys for all `ModelBindingResult`s and `ModelState` entries
 - return fatal error result if formatter adds an error to `ModelState`
 - update potential callers to avoid avoid ignoring `IsFatalError`
- fix test attempting to serialize all of `ModelState`
 - will be borked with additional `RawValue`s in state
- fix two other tests that serialized `ModelState` but checked only `IsValid`

nits:
- address minor inconsistencies in `ModelBindingContext`
- use `System.Reflection.Extensions` package a bit more, where it's already referenced
- remove some unused resources
2015-06-18 16:19:01 -07:00
Ajay Bhargav Baaskaran b245996949 [Fixes #2700] Added HttpHeadAttribute 2015-06-17 12:58:02 -07:00
Doug Bunting 27283ec098 Make `string`-based expression evaluations behave consistently
- #1485, #1487
 - handle `TemplateInfo.HtmlFieldPrefix` in `ViewDataEvaluator.Eval()`
  - attempt lookup in the `ViewDataDictionary` using full name then evaluate
    relative `expression` against `viewData.Model`
  - handle `null` or empty `expression` special case in this method (remove `throw`s)
 - always pass relative `expression` name into `Eval()`
  - remove `null` or empty `expression` handling from higher-level code
  - in a couple of cases, special-case returned `ViewDataInfo`
- #2662
 - remove incorrect guard from `DefaultHtmlGenerator.GenerateRadioButtion()`
- add doc comments for the core methods that have changed
- enable unit tests skipped due to one of above bugs
 - fix one (yeah, just one) other test with incorrect expectations
- remove functional test comments about the above bugs and update expectations

nits:
- move some comments describing `ViewDataEvaluator` methods above the methods
2015-06-16 21:54:56 -07:00
Doug Bunting 8b5931d758 Add `Encode()` and `Raw()` overrides to `IHtmlHelper<TModel>`
- #2392
- `dynamic` does not work correctly when inherited from a base `interface`
2015-06-16 18:48:07 -07:00
Ajay Bhargav Baaskaran 69e051dab7 Removed Cors.Core dependency from Mvc.Core 2015-06-16 10:25:27 -07:00
Ajay Bhargav Baaskaran fcdbd17e58 Removed Diagnostics.Abstractions dependency from Mvc.Razor 2015-06-16 10:25:26 -07:00
Ajay Bhargav Baaskaran 6fd8465402 Removed unnecessary cors dependency 2015-06-16 10:25:25 -07:00
Doug Bunting 296ec7736e Go one less step when resolving `[ModelMetadataType]`
- #2610
- make MVC 6's attribute consistent with data annotation's `[MetadataType]`, used in MVC 5
2015-06-14 18:02:10 -07:00
Ryan Nowak faaba481e8 Adding an 'AddMinimalMvc()' for Mvc.Core and sample
This adds the ability to configure Mvc.Core for a project; MVC with
minimal services and dependencies.
2015-06-12 11:29:47 -07:00
Ryan Nowak a665e48826 A new pattern for adding multi-registration services
This is some cleanup of how we add multi-registration services to avoid
duplication when calling AddMvcServices multiple times. Also improved
tests to be more clear, and to verify all of our special cases
explicitly.
2015-06-12 11:29:42 -07:00
Ryan Nowak 0861612779 A new pattern for adding multi-registration services
This is some cleanup of how we add multi-registration services to avoid
duplication when calling AddMvcServices multiple times. Also improved
tests to be more clear, and to verify all of our special cases
explicitly.
2015-06-12 11:23:51 -07:00
Hisham Abdullah Bin Ateya 1f9a451e2f Using 'nameof' operator instead of margic strings 2015-06-12 02:26:34 +03:00
Ajay Bhargav Baaskaran a3c593bda9 [Fixes #2409] Return EmptyResult for void actions 2015-06-11 11:51:51 -07:00
Doug Bunting 3f6ab3bb03 Add `ModelMetadata.ElementMetadata`
- #2664
- use new property to correctly determine `isTargetEnum` in `GetCurrentValues()`
 - avoid `ArgumentNullException` in all cases where raw values are `enum` but target is not
- stop skipping tests blocked by #2664, exposing a couple more #1487 issues
- use new property instead of private `GetElementType()` methods where possible
 - cleans up some duplicate code
 - also remove redundant use of `IsCollectionType` and `ElementMetadata`

nits:
- move properties above methods in `ModelMetadata`
- avoid accidentally-incorrect "Remove Unnecessary Usings"
2015-06-10 12:02:50 -07:00
Ajay Bhargav Baaskaran 37d1881dad [Fixes #2609] Support for binding all integer types to enums 2015-06-09 16:08:38 -07:00
Ryan Nowak a679e87a9b Split Mvc.Core
This is the first step is some more refactorings to come in the future
with the goal of making MVC less monolythic. This makes the core of MVC
more reusable and more in line with the design of other vNext platform
components.

With this change, Mvc.Core contains just the minimal guts needed to build
a working app.
- Action Discovery
- Action Invoker
- Filters
- ObjectResult
- Model Metadata
- Model Binding
- Formatters
- Validation System

And yes, we are aware of the irony of 'minimal MVC' not including the view
system. The idea is that this is the kernel of an MVC app, and anything
real is layered on top.

The most noticable impact of this change is that MvcOptions has been blown
apart into more managable chunks. See the various ConfigureMvc*** methods.

The new Mvc.Extensions package is a placeholder while we evaluate and tune
the new definitions. Expect more changes as features are move to their own
packages, and in some case their own repositories.

For now there is no experience to bootstrap an Mvc.Core app. That's coming
next.
2015-06-09 02:12:13 -07:00
Ryan Nowak 03571cc27b Event Notification for MVC Prototype
Here's a first take on the pattern for publishing notifications from MVC.
2015-06-08 17:49:33 -07:00
Ryan Nowak a452b10ba4 Fix #2278 - Only activate public properties 2015-06-08 15:54:16 -07:00
Ajay Bhargav Baaskaran f5cabf2029 [Fixes #2564] Support comma separated string include in BindAttribute
This reverts commit 7746d0f451.
2015-06-08 14:30:10 -07:00
Ajay Bhargav Baaskaran 7746d0f451 Revert "[Fixes #2609] Support comma separated string include in BindAttribute"
This reverts commit eba352166d.
2015-06-08 14:29:59 -07:00
Ajay Bhargav Baaskaran eba352166d [Fixes #2609] Support comma separated string include in BindAttribute 2015-06-08 14:02:26 -07:00
Kirthi Krishnamraju 74b193b15d Added configurable option for LanguageViewLocationExpander to use subfolder or suffix 2015-06-08 12:07:49 -07:00
Harsh Gupta 67d0bf880a Fixing 2340: ModelMetadata should recompute localizable properties. 2015-06-08 11:07:59 -07:00
Kiran Challa 0469103683 React to Session api review changes 2015-06-08 09:44:05 -07:00
Ryan Nowak 6cd277e8aa Refactor I***ModelBuilder extensibility
Combining IControllerModelBuilder and IActionModelBuilder into a pipeline
of IApplicationModelBuilders. Extensibility for framework features (Auth,
Cors, etc) should implement an IApplicationModelBuilder to add data to
models before IApplicationModelConventions have a chance to run.

Also deleting IGlobalFilterProvider while touching this code, this should
have been removed a while ago when we removed other options facades.
2015-06-07 18:07:41 -07:00
Doug Bunting eefa582069 Address #2526; remove use of a required validator when validating `[BindRequired]`
- only use MVC error message when `[BindRequired]` is violated
- update that error message to more clearly describe the problem
- enable all tests skipped due to dupe bug #2493
- update expectations of a few tests using the old messages

nits:
- rename `ModelBinding_MissingRequiredMember` to `ModelBinding_MissingBindRequiredMember`
- remove `<param>` description of removed `requiredValidator` parameter
- remove unused `MutableObjectModelBinderTest.GetRequiredValidator()`
2015-06-05 16:56:05 -07:00
Kiran Challa bd035714d0 [Fixes #2648]: Fix registration of MVC services 2015-06-05 09:43:40 -07:00
Kirthi Krishnamraju 30d11a8227 Added LanguageViewLocationExpander into framework and removed it from samples 2015-06-04 14:06:08 -07:00
Doug Bunting e31eab0391 `ByteArrayModelBinder` should return `null` only when type is not matched
- #2456
- visible behaviours now match MVC 5
- prevent `CollectionModelBinder` from converting no value to `byte[0]`
- prevent `TypeConverterModelBinder` from converting empty value to `byte[] { '\0' }`

nit:
- remove additional delegates `ModelBindingTestHelper.GetOperationBindingContext()` calls
 - a few left despite #2625 cleanup
2015-06-01 12:20:17 -07:00
Doug Bunting 26795bd4b5 Correct test expectations
- use valid `multipart/form-data` content type; include a `boundary`
- correct expectations of `FormCollection` model binder's operation
 - restore tests actually skipped for either of the above reasons
- add more tests with `ModelBindingResult.Model==null` and both `IsModelSet` values

#### Remove test references to Won't Fix bug #2473
- restore #2473 tests; update test expectations
- expect `null` composite results whenever binding fails

#### Restore test skipped due to "#2646"
- that issue does not exist; was likely #2466 or similar fixed bug

#### Rename model binding tests that still mention ReturnsFalse or ReturnsTrue

#### Minor src changes
- remove unused variable and unnecessary nesting in `DefaultControllerActionArgumentBinder`
- remove dangling mention of `[DefaultValue]` in `ComplexModelDtoModelBinder`

#### nits:
- remove empty delegates from some `GetOperationBindingContext` calls; `null` fine
- do some `using` cleanup
- combine two test methods in `KeyValuePairModelBinderTest`
- name a few more arguments
2015-06-01 12:15:39 -07:00
N. Taylor Mullen e0b8532735 Update names and spacing of some missed ChunkTree renames. 2015-05-29 23:07:55 -07:00
N. Taylor Mullen 951a1d0879 Addressed code review comments. 2015-05-29 14:59:07 -07:00
N. Taylor Mullen 94553703a2 React to aspnet/Razor#140
- ICodeTreeCache => IChunkTreeCache
- ModelCodeGenerator => ModelChunkGenerator
- MvcCSharpCodeBuilder => MvcCSharpCodeGenerator
- Updated files that used Razor resources that are now in different namespaces.
- Updated variable names to account for Razor renames.

aspnet/Razor#140
2015-05-29 14:21:35 -07:00
CodingGorilla 70b56f157c Updated the ResponseCacheFilter class to store a reference to the CacheProfile passed into the contructor
Updated the ResponseCacheFilter Duration, Location, NoStore, and VaryByHeader properties to return one of 3 values: the specific setting applied to the instance, the setting supplied by the CachePolicy (from the constructor), or a default value.  The emphasis being not to change the outward function of these properties to consumers, but to defer the evaluation of these properties until the OnActionExecuting method.
Updated the ResponseCacheFilter to check whether a cache duration has been supplied when the NoStore property is false and throw an InvalidOperationException when a duration has not been provided.
Updated ResponseCacheFilterTest to reflect the changes in behavior in the ResponseCacheFilter
Updated the ResponseCacheFilterAttributeTest to reflect the change in the behavior of the ResponseCacheFilter

Added unit tests to ResponseCacheFilterTest.cs to verify that the CachePolicy properties are properly overriden with the properties set directly on the ResponseCacheFilter.

Added functional tests to test the ability to override CacheProfile settings with properties on the ResponseCacheAttribute
2015-05-29 12:28:14 -07:00
Harsh Gupta 4f419eee55 Removing creating ModelValidationNode by default in CompositeModelBinder.
This moves the responsibility of of MVN creation to individual model binders if they want the individual models to be validated.
2015-05-29 09:21:11 -07:00
David Paquette 3fe0490b99 Renamed FileVersion to AppendVersion in tag helpers that support cache busting
FileVersion property renamed to AppendVersion in ImageTagHelper,
LinkTagHelper and ScriptTagHelper.

asp-file-version attribute renamed to asp-append-version.

Resolves issue #2540
2015-05-28 17:56:19 -07:00
Ryan Nowak 144c1d3cf4 Fix #2151 - Part 4 remove [Activate] support from controllers.
This change completely removes [Activate]. In a controller, you should
constructor injection or [FromServices] to access services.

To access context items (ActionContext, ActionBindingContext, root
ViewDataDictionary) you should use the respected attribute class.

We'd like to consider streamlining this further in the future by getting
down to a single injectable context for controllers, but for now this will
have to do.
2015-05-21 22:57:56 -07:00
Ryan Nowak af5322e2ce Part of #2151 - Remove [Activate] from TagHelpers
This change removes [Activate] support from TagHelpers. TagHelpers which
need access to context should use [ViewContext] to have it injected. To
access services, use constructor injection.
2015-05-21 22:57:51 -07:00
Ryan Nowak b393191cff Part of #2151 - Remove [Activate] from ViewComponents
This change removes [Activate] from ViewComponents. Accessing context
should be done through [ViewComponentContext]. Accessing services should
be done though constructor injection.
2015-05-21 22:57:45 -07:00
Ryan Nowak 92dbd8923b Fix #2582 - Remove @inject dependency on [Activate]
Removes usage of [Activate] in razor code generation. Razor will now use
it's own special attribute recognized by the Razor activator.
2015-05-21 22:57:39 -07:00
Ryan Nowak 8f38650d1f Fix #1579 - Bind top-level collections as an empty collection
This change treats 'top-level' collection-type models similarly to
top-level POCO model - namely that they will always be instantiated even
if there's no data to put inside.
2015-05-21 22:46:04 -07:00
Ryan Nowak b64fd7ae39 Fix #2407 - Add back the implicit [Required] for value types
This change adds a [Required] client validator when
ModelMetadata.IsRequired == true. The bulk of the changes here are
mechanical updates to test files.
2015-05-21 17:52:25 -07:00
N. Taylor Mullen e689863461 Add required attributes to AnchorTagHelper and FormTagHelper.
- This involved also adding required attributes with wildcards.
- With this change AnchorTagHelpers and FormTagHelpers should no longer light up on every `<form>` or `<a>` tag.

#2581
2015-05-21 16:42:45 -07:00
Kiran Challa 2a321fd622 React to Caching api review changes 2015-05-21 14:44:27 -07:00
Doug Bunting 8a701726b3 Rename _GlobalImport.cshtml files to _ViewImports.cshtml
- also rename files and directories with "GlobalImport" in name
 - nearly blind but avoid "ViewImportss" in new names
- public API change: `ViewHierarchyUtility.GetGlobalImportLocations()` -> `GetViewImportsLocations()`
 - primary source updates were comments, tests, and implementation details

nit:
- rename NestedGlobalImports.cs file to NestedViewImportsController.cs, matching class
2015-05-21 12:27:08 -07:00
Kirthi Krishnamraju 78033fda1f fix build break 2015-05-21 11:25:03 -07:00
Doug Bunting 517c013882 React to aspnet/Razor#89 fix
- use `IDictionary<string, TValue>` support in `<a/>` and `<form/>` tag helpers
 - make `RouteValues` dictionaries `IDictionary<string, string>` for ease of use
- remove `TagHelperOutputExtensions.FindPrefixedAttributes()`
- set all `GeneratedTagHelperContext` properties
- add error for tag helper dictionary properties where `TValue` is `ModelExpression`
- add new `RazorPage.InvalidTagHelperIndexerAssignment()` method and resource

tests
- use new `isIndexer` argument when creating `TagHelperAttributeDescriptor`
- arrange `AnchorTagHelper` and `FormTagHelper` correctly
 - also expect `routeValues != null` in calls to `IHtmlGenerator`

nits:
- get rid of some `foo` and `bar` gunk in tests
- remove unused variable to cleanup a test compilation warning
2015-05-20 22:07:19 -07:00
Kirthi Krishnamraju 337bbad51d React to aspnet/Configuration #195,#198 and fix few minor build break issues 2015-05-20 20:01:23 -07:00
Ryan Nowak fa56df93c3 Fix #2407 - Part 1 - Make model binding behavior for [Required] compatible
with MVC5.

This change removes the behavior in model binding to validate values 'on
the wire' for requiredness instead of the looking at the model. This
restores the behavior of [Required] for model binding to the MVC5
semantics.
2015-05-19 15:57:56 -07:00