Commit Graph

1006 Commits

Author SHA1 Message Date
Doug Bunting 3d84b528e5 Extend `IHtmlGenerator.GenerateSelect()` to make selected values available
nit: use Linq methods, not query syntax in `DefaultHtmlGenerator`
2014-11-07 14:10:26 -08:00
N. Taylor Mullen de9a999bf6 React to aspnet/Razor#208 changes. 2014-11-07 11:54:30 -08:00
Pranav K 970ee1b71f Fixing dev NuGet.config 2014-11-06 22:08:10 -08:00
Pranav K d5145edffe Merge branch 'release' into dev 2014-11-06 12:21:21 -08:00
Pranav K ed64922499 Updating to release NuGet.config 2014-11-06 12:21:03 -08:00
Harsh Gupta 6b2f331e8d Adding support for excluding types for validation, based on type names for body bound models. 2014-11-06 11:00:50 -08:00
Pranav K bff70e0dd1 Merge branch 'release' into dev 2014-11-06 10:49:13 -08:00
Pranav K 860d81068c Updating to release NuGet.config 2014-11-06 10:49:11 -08:00
SonjaKhan 27e0323a8a renaming TraceType to LogLevel 2014-11-06 09:24:02 -08:00
Doug Bunting 687b174b63 Accept VS changes to avoid noise later 2014-11-04 22:42:51 -08:00
Doug Bunting f7ef604b86 Regenerate .kproj files
- does not seem to have a negative impact
- e.g. sample web projects run / debug fine
2014-11-04 22:41:53 -08:00
Ryan Nowak e37f1ad85f Fix #1502 - Remove duplicate unit tests 2014-11-04 13:30:15 -08:00
Doug Bunting 90e41b905a Add `ModelMetadata.HtmlEncode` property
- use new `ModelMetadata.HtmlEncode` property in HTML helpers
 - specifically in default HTML display and editor object templates (e.g.
   `@Html.DisplayFor()`) when value is non-`null` and the template is invoked
   with template depth greater than 1
- similar to MVC 5.2 commit [2b12791aee4f](https://aspnetwebstack.codeplex.com/SourceControl/changeset/2b12791aee4ffc56c7928b623bb45ee425813021)

nits:
- remove dupe `null` check in `DefaultDisplayTemplates.ObjectTemplate()`
- move backing fields initialized with constants together in `ModelMetadata`
2014-11-03 12:23:33 -08:00
Pranav K d5515bfbb6 Adding arg null or empty checks to RazorViewEngine.FindView &
FindPartialView
2014-11-02 18:33:56 -08:00
Pranav K 74da350086 Remove enableInstrumentation from CompilerCache and IMvcRazorHost 2014-11-02 18:15:39 -08:00
N. Taylor Mullen 4720381d78 Change the IRazorCompilationService's DI lifetime.
- Modified the MvcServices registration of IRazorCompilationService to be transient to ensure the IMvcRazorHost does not maintain state.
2014-10-31 22:41:07 -07:00
Ryan Nowak 30884d8d26 Removing types marked as obsolete 2014-10-31 18:54:18 -07:00
Ryan Nowak b8645eeb31 Follow up to JsonResult changes
Changing the WebAPI shim to use the new and improved JsonResult.
2014-10-31 18:33:15 -07:00
Ryan Nowak 0ccfcc4316 Fix for breaking API change from routing 2014-10-31 18:23:19 -07:00
Ryan Nowak 105c99cbf2 Fix #1370 - Always use the provided formatter in JsonResult
The change here is to always use the provided formatter, instead of using
it as a fallback. This is much less surprising for users.

There are some other subtle changes here and cleanup of the tests, as well
as documentation additions.

The primary change is that we still want to run 'select' on a formatter
even if it's the only one. This allows us to choose a content type based
on the accept header.

In the case of a user-provided formatter, we'll try to honor the best
possible combination of Accept and specified ContentTypes (specified
ContentTypes win if there's a conflict). If nothing works, we'll still run
the user-provided formatter and let it decide what to do.

In the case of the default (formatters from options) we do conneg, and if
there's a conflict, fall back to a global (from services)
JsonOutputFormatter - we let it decide what to do.

This should leave us with a defined and tested behavior for all cases.
2014-10-31 14:30:31 -07:00
sornaks d178200795 Adding functional tests for Filters. 2014-10-31 08:36:31 -07:00
Pranav K 3aaeebd9c5 Revert "Revert "Added a functional test for view precompilation""
This reverts commit 6b2ab32885.
2014-10-30 14:38:44 -07:00
Doug Bunting 5420b9d382 More `ViewDataDictionary` tests
- separate and extend `ViewDataDictionary<TModel>` tests
2014-10-29 19:19:09 -07:00
Doug Bunting c89bca5924 Adjust tests to handle new `ViewDataDictionary` invariants
- ensure `ViewDataDictionary` constructors are not passed a `null` or
  `Mock.Of<IModelMetadataProvider>()` instance
 - `ViewDataDictionary` constructors always use the `IModelMetadataProvider`
- `viewData.ModelMetadata` now never `null`
- `ViewDataDictionary<int>.Model` no longer throws if read before it's written
- `ViewDataDictionary.ModelMetadata` now copied to new instances in fewer cases
 - e.g. don't use unusual `object` datatype with customized `ModelMetadata`
2014-10-29 19:18:59 -07:00
Doug Bunting 97aaa7049e Correct code checking for `ViewDataDictionary.ModelMetadata==null`
- `null` checks can generally be removed but in one case needed to
  special-case metadata for `object`

nit: remove duplicate empty `string` check in
`ExpressionMetadataProvider.FromStringExpression()`
2014-10-29 19:18:31 -07:00
Doug Bunting e73655229c Correct some `ViewDataDictionary` constructor calls
- ensure correct `ViewData.ModelState` value in a `RazorPage` instance
- let view components inherit `ViewData.Model` from surrounding context
- do not create an isolated `ViewDataDictionary<TModel>` in one HTML helper
 - allows previous `ViewDataDictionary<TModel>` constructor to be `internal`
  - also add comments for that constructor
- change two `ViewDataDictionary` copy constructor calls to avoid uselessly
  copying `Model` and related information from source
2014-10-29 19:18:20 -07:00
Doug Bunting a3b07dacdb Rework `ViewDataDictionary` constructors to ensure `ModelMetadata` is never `null`
- `ViewDataDictionary<TModel>` constructors now pass `typeof(TModel)` to base
  `protected` constructors
 - move type compatibility checks into base `ViewDataDictionary`
 - remove `ViewDataDictionary<TModel>.ModelMetadata` override
- don't retrieve `ModelMetadata` twice in a single constructor invocation
- remove newly-unused `protected` properties and use `private` fields in copy
  constructors

Address longstanding problems found (see #1466)
- avoid reusing `ModelMetadata` after `Model` value changes
 - reset `ModelMetadata` backing field in `Model` setter
 - `Model` and `ModelMetadata.Model` could previously get out of sync
- carry `ModelMetadata` forward from an outer scope only if `Model` matches
 - previously two scopes could have different `Model` values but share their
   `ModelMetadata` (and `ModelMetadata.Model`)
 - related to previous item but didn't require `Model` setting; switching
   to a property of the same type as containing `Model` was enough
- avoid NRE if `ViewDataDictionary<int>.Model` is read before it's written
 - problem affected all non-`Nullable` value types
- `ViewDataDictionary.ModelMetadata` setter should throw if value is `null`

nits:
- add and reword doc and code comments
 - `ViewDataDictionary<TModel>` constructors should only inherit base's
   parameter descriptions; have more information in the derived class
- make a few `ViewDataDictionary` properties get-only
- clean up `using` statements in `ViewDataDictionary<TModel>`
- make two constructors `internal`
2014-10-29 19:03:58 -07:00
Ryan Nowak 83187945d1 Fix for #1052 - ViewComponents should support fully qualified names
This change adds the concept of a full-name to viewcomponents. View
components can be invoked using either the short name or long name. If the
provided string contains a '.' character, then it will be compared against
full names, otherwise it will be matched against short names only.

The short name is used for view lookups.

If the name is explicitly set via ViewComponent attribute, then the full
name is the name provided. The short name is the portion of the name after
the last '.'. If there are no dots, then the short name and full name are
the same.

If the name is not set explicitly, then it is inferred from the Type and
namespace name. The short name is the Type name, minus the 'ViewComponent'
suffix (if present). The full name is the namespace of the defining class,
plus the short name.
2014-10-29 17:34:01 -07:00
Kirthi Krishnamraju dc1aaf0664 Merge branch 'release' into dev 2014-10-29 13:42:56 -07:00
Kirthi Krishnamraju 028a2359a4 Added description in project.json for all projects 2014-10-29 13:40:31 -07:00
Pranav K 5f8c410d0b Merge branch 'release' into dev 2014-10-29 10:23:13 -07:00
Pranav K 07ff6eb3be Update to JSON.Net 6.0.6
Fixes #1473
2014-10-29 10:18:55 -07:00
jacalvar 6b2ab32885 Revert "Added a functional test for view precompilation"
This reverts commit 310feeb826.
2014-10-28 19:14:50 -07:00
jacalvar 310feeb826 Added a functional test for view precompilation 2014-10-28 18:38:15 -07:00
Ryan Nowak 305dd87b9b Fix for #1442 - Find better names for ApiExplorerProperties
Taking the suggestion here to move these to a sub-object. This is future
proof in the event that we need to capture more data for ApiExplorer, and
reads better.
2014-10-28 13:03:19 -07:00
Ryan Nowak 46897037e9 TODO removal part 1 - ActionExecutorTests 2014-10-28 12:54:14 -07:00
Ryan Nowak 9a77c2bc1e Fix for #1448 - ViewComponents must be public top-level classes
ViewComponents and Controllers now follow the same rules exactly for what
types of classes they can be.

Also corrected a bug in a test for controllers. Closed-generic types can
be controllers, the test was wrong.
2014-10-28 12:36:07 -07:00
Pranav K 1e5fd25375 Merge branch 'release' into dev 2014-10-28 12:31:23 -07:00
Pranav K e25e4c4a5d Change logging in Mvc to log with TraceType.Verbose
Fixes #1457
2014-10-28 12:11:33 -07:00
Pranav K cfd38d2845 Merge branch 'release' into dev 2014-10-28 06:57:23 -07:00
Pranav K d35057deea Reacting to Roslyn version changes 2014-10-28 06:34:06 -07:00
Pranav K 6c4462a76f * Porting Hidden and HiddenFor unit tests
Partial fix to #453
2014-10-27 17:54:56 -07:00
Doug Bunting 1f670bf3a7 Merge branch 'release' into dev 2014-10-27 16:43:02 -07:00
Doug Bunting cfcb1f2e2f Add more unit tests of `ViewDataDictionary` copy constructors 2014-10-27 16:26:04 -07:00
Doug Bunting 4bde6f6caf Add "/home/nulluser" view to MVC sample
- exercises display and editor helpers when `Model==null`
2014-10-27 16:25:48 -07:00
Doug Bunting 8d2a1c47e5 Change `ViewDataDictionary` copy constructor to ensure `ModelMetadata` is
never that for `object`
- `ViewDataDictionary<TModel>.ModelMetadata` was for `object` after base
 copy constructor got value from `ViewDataDictionary<object>`
- problem led to #1426 symptoms
- with copy constructor leaving `base.ModelMetadata==null` more often,
 `ViewDataDictionary<TModel>.ModelMetadata` usually tracks `TModel` if
 `Model==null`

nit:
- fix existing comment in main `ViewDataDictionary` copy constructor
2014-10-27 16:25:24 -07:00
David Fowler 653d31b336 Don't lock metadata references 2014-10-27 16:14:32 -07:00
Pranav K e0116bab30 Modifying ArgumentNullOrEmpty message to be consistent with Mvc 5 \
testing code.
2014-10-27 15:07:53 -07:00
N. Taylor Mullen 7934c432c8 React to case insensitive TagHelperOutput.Attributes.
- Cleaned up some existing bad code that worked around case sensitive TagHelperOutput.Attributes.
- Modified MergeAttributes to be case insensitive when it comes to merging class attributes.
- Added a test to verify the new MergeAttribute case insensitive class merging.

aspnet/Razor#186
2014-10-26 13:32:11 -07:00
N. Taylor Mullen 09af7bb77b Change TagBuilder Attributes and HTML Helper dependencies to be case insensitive.
- This involved adding the StringComparer.OrdinalIgnoreCase comparer to the TagBuilder's Attributes dictionary.
- Added tests to validate that all methods that made use of TagBuilder.Attributes abide by the new ignore case mechanic.
- Added two sets of tests to validate the new functionality of Object => Dictionary HTML helper tests.
- Modified a functional test that utilizes HTML Helpers to provide same attribute-different case objects.
- Fixed existing HTML helper tests to account for new ordering of attrbutes (dictionary no longer adds key value pairs, it sets them).

#1328
2014-10-26 13:15:09 -07:00