Commit Graph

270 Commits

Author SHA1 Message Date
dougbu 4feb8f4f28 Remove reduncant `ArgumentNullOrEmpty` resource from Core project
- came from Rendering but Core already had `ArgumentCannotBeNullOrEmpty`
- moved wording from "argument must not be" to "value cannot be"

Also make similar resources consistent in this repo
- adjust Razor's `ArgumentCannotBeNullOrEmpty` resource to use same wording
  as Core, adding "The"
- update ModelBinding to also have `ArgumentCannotBeNullOrEmpty` and to use
  it consistently with Core and Razor
2014-04-08 12:03:50 -07:00
Sornakumar b25091f6c1 Merge branch 'WebFX156' into dev 2014-04-08 10:52:38 -07:00
sornaks 7c8dd45b8b WebFX 156 - Adding support for Redirect and RedirectPermanent 2014-04-08 10:49:56 -07:00
harshgMSFT 01527cd4df Adding HttpPost, HttpDelete, HttpPut, HttpPatch attributes 2014-04-07 22:31:48 -07:00
Ryan Nowak faa8251b70 Merging Mvc.Rendering and Mvc.Core 2014-04-07 17:32:49 -07:00
harshgMSFT 652e89b343 Adding HttpGetAttribute and AcceptVerbsAttribute.
HttpPost, HttpDelete, HttpPut and HttpPatch would be similar.
Also adding few tests.
2014-04-07 15:10:22 -07:00
Ryan Nowak df16982697 Adding and updating old propertyhelper code for dictionaries 2014-04-07 14:41:24 -07:00
Ryan Nowak ec4b3a29c0 Adding smart link generation
This feature will enforce a contract that link generation has to point to
a real action. Read the comments in code for more details and rationale.
2014-04-07 14:37:52 -07:00
Ryan Nowak 3548a46ca9 CR feedback 2014-04-07 12:49:32 -07:00
Ryan Nowak d2386d7ded CR Feedback 2014-04-07 12:49:30 -07:00
Ryan Nowak 37f4e2efaa Adding more overloads for IUrlHelper
(cherry picked from commit 4ebe6b5e386388914160b07c91142a9e7483134b)
2014-04-07 12:49:29 -07:00
Pranav K 931d18b851 Adding exceptions for RenderSection, DefineSection and RenderBody 2014-04-07 12:25:44 -07:00
dougbu 1cd15fbf60 Add form HTML helpers and `MVCForm`
- copy over from legacy MVC
- fixup namespaces, remove copyright notices, ...
- temporarily remove `RouteBeginForm() overloads
- move main components to `HtmlHelper` and declare in `IHtmlHelper<T>`
- change `UrlHelper` to avoid treating an existing dictionary as an object
- add `HtmlHelper.Createform()` factory
- use in MVC sample; move BeginForm / TextBox samples to a new row
2014-04-07 12:04:28 -07:00
Pranav K 94c028a5df Adding support for RazorView.IsSectionDefined 2014-04-06 17:18:37 -07:00
N. Taylor Mullen c0d06f1fbc Fixed combination of Display Templated Helpers.
Had to make adjustments to allow the project to build (things that were missed by git).  Also made some changes to ensure it builds in CoreCLR.
2014-04-06 16:14:10 -07:00
N. Taylor Mullen 671c7dd59e Addressed code review comments. 2014-04-06 16:01:41 -07:00
N. Taylor Mullen 1f47abd758 Implement DisplayForModel Html Helper.
Essentially add extension methods and call through to infrastructure.
2014-04-06 16:01:10 -07:00
N. Taylor Mullen 4f67dee048 Addressed code review comments 2014-04-06 15:59:51 -07:00
N. Taylor Mullen 52ce83db9e Implement DisplayFor Html Helper.
Essentially add extension methods and call through to infrastructure.
2014-04-06 15:59:32 -07:00
N. Taylor Mullen 2b3687282e Addressed code review comments. 2014-04-06 15:57:32 -07:00
N. Taylor Mullen 8477f47632 Implement Display HTMLHelper.
Essentially add extension methods and call through to infrastructure.
2014-04-06 15:55:11 -07:00
N. Taylor Mullen 5da827b58f Add infrastructure for templated display helpers.
I changed code paths for how we render templates from the old world to better separate code.
2014-04-06 15:53:30 -07:00
Pranav K fc01cf6eea Fixing typo in DefaultAssemblyControllerProvider 2014-04-04 16:29:16 -07:00
Yishai Galatzer 1921387b56 Fix #198 2014-04-03 17:29:37 -07:00
Pranav K 9291cbc50b Adding support for RenderSection
* Adding unit tests for DefineSection \ RenderSection
* Changes per code review feedback
2014-04-03 15:00:06 -07:00
Pranav K df9d5c4875 Adding support for Render Section
Initial draft for DefineSection \ RenderSection. This change is based on
changes to the Razor parser to enable Razor to generate HelperResults for
section instead of void delegates.
2014-04-03 14:26:54 -07:00
Pranav K 75dae948b2 Change IViewEngine.FindView to be synchronous 2014-04-03 14:20:39 -07:00
Pranav K 2e0bed750e Adding support for Url.Content, Href and ~/ in Razor views 2014-04-03 14:12:55 -07:00
Ryan Nowak 49de9d2828 Adding Value Html Helpers 2014-04-03 12:22:03 -07:00
dougbu 42561f14d3 Quick fix for a build warning
- remove a duplicate using of `System.Collections.Generic`
- FYI `k build` command does not detect this problem
- nit: also cleanup long lines and align wrapped parameters
2014-04-03 09:38:14 -07:00
Yishai Galatzer ebd54bfc06 Dispose controllers after they have been utilized by the action invoker 2014-04-03 09:31:23 -07:00
dougbu 0a62a581de Add `TextBox` and `TextBoxFor`
- HtmlHelper service now needs an `IModelMetadataProvider` instance
- make `GetInputTypeString()` private
- use `TextBox()` and `TextBoxFor()` in MVC sample
- throw if `ExpressionMetadataProvider.FromLambdaExpression()` returns `null`
2014-04-02 20:49:48 -07:00
dougbu a1a180d4d0 Fill out Rendering.Expressions II
Copy from:
- some `static` `ModelMetadata` methods -> `ExpressionMetadataProvider`
- `TryGetValueDelegate` -> `TryGetValueDelegate`
- `TypeHelpers.CreateTryGetValueDelegate()`, related bits -> `TryGetValueProvider`
- `ViewDataDictionary.ViewDataEvaluator` inner class -> `ViewDataEvaluator`
- `ViewDataInfo` -> `ViewDataInfo`
- `ViewDataDictionary.Eval()`, related bits -> add to `ViewDataDictionary`

Change to fit in new world:
- usual stuff: `var`, `[NotNull]`, String -> string, namespaces, etc.
- PropertyDescriptor -> PropertyInfo
- update Reflection use
- no `IModelMetadata.Container` property
- improve a couple of variable and parameter names
- make `ViewDataInfo` immutable
- make `ViewDataDictionary.FormatValueInternal` `public` and -> `FormatValue`
- remove `[SuppressMessage]` attributes
2014-04-02 20:02:36 -07:00
Yishai Galatzer d081300185 Factor filters action to private methods 2014-04-02 18:51:50 -07:00
Yishai Galatzer 9756f74565 Action invocation changes:
Changed 404s to throw
Propagate reflected exception
Add resources for specific errors
2014-04-02 18:51:49 -07:00
Ryan Nowak 1b4754454b Relayering MVC Dependencies Part 1/N
Merging Mvc.Razor.Host into Mvc.Razor
2014-04-02 18:28:34 -07:00
dougbu 7a97b13c8c Cleanup pass in Rendering (and Common)
- correct `ArgumentNullOrEmpty` and pass parameter name to
  `ArgumentException` constructor
- remove `[SuppressMessage]` attributes
- `AnonymousObjectToHtmlAttributes` should return an `IDictionary`
- `var`
- remove straggling copyright notices
- wrap long lines (did not reword any comments)
- align a few parameters
2014-04-02 14:59:35 -07:00
N. Taylor Mullen dad87c5239 Add ValidationSummary helper.
This enables Html.ValidationSummary.  This is in reference to WEBFX-97.
2014-04-02 14:58:08 -07:00
Yishai Galatzer b9010072aa Fix github #164 (when return type is object we always return 204) 2014-03-31 18:59:19 -07:00
dougbu fbbc59b392 Add `Name()`, `NameFor()`, and `NameForModel()` helper methods
- `Name()` is a `virtual` instance method to allow useful derivation
- `NameFor()` is an instance method to avoid adding `GetExpressionName()`
  to the public surface; either method could be `virtual`
- `NameForModel()` is an extension method because it's not usefully overridden
- use `Name*()` in sample
2014-03-31 16:07:56 -07:00
dougbu aaa30591a8 Get things working in our world
- usual stuff, especially use of `var` and `[NotNull]`
- remove references to `ExpressionFingerprintChain` and so on to minimize
  classes we bring over now (and remove one cache)
- copy over missing resource
- rework checks in `IsSingleArgumentIndexer()`
2014-03-31 15:31:40 -07:00
dougbu f108315038 Copy over two expression-support classes from legacy MVC 2014-03-31 15:31:39 -07:00
Sornakumar e8a76cfd7f Merge pull request #151 from sornaks/WebFX153
WebFX-153: Add Content() and Json() to the Controller class.
2014-03-31 15:03:56 -07:00
harshgMSFT 8d4a6c760a Action Selection Convention: Changes for Treating Index method as a default Get/Post method.
Also adds unit tests for the changes.
2014-03-31 12:59:30 -07:00
Pranav K c72c80c101 Add the ability to correctly determine if a particular field has been validated.
There are several portions of model validation that attempt to avoid
revalidating if a field has been validated. However the behavior of
ModelStateDictionary makes it difficult to distinguish between an
unvalidated field and a field without validation errors. This change
resolves this issue by letting the caller distinguish between the two
cases.
2014-03-31 12:40:38 -07:00
N. Taylor Mullen 2de5d57348 Add PartialAsync and RenderPartialAsync.
This enables Html.PartialAsync and Html.RenderPartialAsync.  It also includes a sample to showcase the features.  This is in reference to WEBFX-95.
2014-03-31 12:19:10 -07:00
N. Taylor Mullen a5ed1157d5 Refactor ViewEngine to support partials.
This references WEBFX-95 and is the preliminary part to support Partial helpers.
2014-03-30 17:20:09 -07:00
dougbu 2b70156cf4 Inject `HtmlHelper` property into `RazorView<T>`
- add `IHtmlHelper<T>` and `ICanHasViewContext`
- adjust `HtmlHelper` and `HtmlHelper<T>` to match
- throw if `ViewContext` accessed prior to `Contextualize` call
- XML comments (from old world) all around

Note
- no current need for an `HtmlHelper` copy constructor or `Clone()` method
- expect recursion code to get another injected `IHtmlHelper<T>` and then
  "contextualize" that instance with a new `ViewContext`
2014-03-28 17:29:00 -07:00
dougbu 94db3c392a Add `FormContext` to `ViewContext`
- start with `FormContext` and classes it needs from legacy world
- FYI `ModelClientValidationRule` came from Web Pages; the rest from MVC

Cleanup and make files compile in new world
- remove `FormContext.GetJsonValidationMetadata` method; will file an
  issue to revive this using Json.NET
- don't store `FormContext` in the `HttpContext`, no longer have child
  actions
- do `null` checks in setters, not getters (minor perf improvement)
- fix namespaces and usings
- wrap long lines; use `[NotNull]`; no copyright notice
- use explicit comparers for dictionaries
- add XML comment for odd `ModelClientValidationRule.ValidationType`
  property
- Collection -> List
2014-03-28 17:01:23 -07:00
Yishai Galatzer 54c73e4227 Cleanup + TODO 2014-03-28 16:55:56 -07:00
Pranav K f1efbde29d Revive HelperResult to allow using @helper in views 2014-03-28 11:08:15 -07:00
dougbu 655b329dd0 Increment System.Threading.Tasks package version
- today's build break, mark II

also remove dangling reference to TestCommon
2014-03-27 19:56:27 -07:00
dougbu f60f14d537 Add `TemplateInfo` property to `ViewDataDictionary`
Compared to legacy MVC:
- correct usings and namespace
- remove `GetFullHtmlFieldId` method; depends on `HtmlHelper` method that
  can't be static
- String -> string
- remove reference to a legacy bug
- convert internal `VisitedObjects` property to public `AddVisited()` method

Further cleanup
- remove explicit backing fields for remaining properties
- add copy constructor to replace code distributed around legacy MVC
- don't "combine and trim" in `GetFullHtmlFieldName()`
2014-03-27 16:01:29 -07:00
Ryan Nowak ffb73a1ed8 Fix build issues with Injector
This was causing intellisense failures in VS. It looks like the
commandline is able to accidentally pick up the compatability extensions
from the model binding assembly, but this is not the case in VS.

Changed this code not to rely on compatability extensions.
2014-03-27 15:07:28 -07:00
sornaks 007ac9443d WebFX-153: Add Content() and Json() to the Controller class. 2014-03-27 14:12:39 -07:00
Pranav K 44af396da9 Prefer string.Equals static method over the Equals instance method 2014-03-26 22:24:38 -07:00
Pranav K 8e495158ef Modifying ModelStateDictionary to derive from IDictionary
* Reintroducing methods that weren't ported over earlier
2014-03-26 17:29:45 -07:00
Ryan Nowak 6da448fb8e Commonizing JSON writer/serializer code
This doesn't add any new extensibility, and will likely change again in
the future when we add extensibility. For now this is a stopgap to reduce
duplication between JsonResult and JsonViewComponentResult.
2014-03-26 17:02:44 -07:00
Ryan Nowak 469414c419 Adding support for scoped services in WebFX
We'll create a scoped service provider if the middleware that does it
isn't there.

We resolve all of our stuff from the scoped service provider, allowing
users to plug in any scoped things they want.

Ported UrlHelper to be a scoped service.
2014-03-26 12:45:36 -07:00
Ryan Nowak 21e48be06e Patternizing our property injection/initializer 2014-03-26 11:58:20 -07:00
dougbu 8ed5b7b079 Fix WebFx-169 and #118
- move `DynamicObject` derivation up to new `DynamicViewData` class, fixing [WebFx-169](http://projectk-tc:8080/browse/WEBFX-169)
- avoid direct `_data` lookup in previous `TryGetMember()`, fixing [#118](https://github.com/aspnet/WebFx/issues/118)
- rename ViewData -> ViewDataDictionary

Also
- flesh out `IDictionary<string, object>` implementation in `ViewData`
- provide `ViewData` copy constructor that allows TModel to change
- remove `TryGetIndex()` and `TrySetIndex()` implementations; use `ViewData[]` instead
- restore `ViewContext.ViewBag` from legacy MVC
2014-03-26 11:42:52 -07:00
Pranav K 12632c5fc3 Replacing not null checks in ModelBinding with NotNullAttribute : part deux 2014-03-25 15:10:57 -07:00
Ryan Nowak 6fb0d5b282 Commonize 'throw on view not found'
Deduping this code by moving it to ViewEngineResult.
2014-03-25 14:25:49 -07:00
Ryan Nowak fa21d1cd65 Remove extra TextWriter parameter from IView
This was here in the legacy code for legacy reasons. We're passing the writer
as part of the ViewContext, so we can remove this extra parameter.
2014-03-25 14:19:43 -07:00
Pranav K a2cea18529 Replacing argument not null checks in ModelBinding with NotNullAttribute
* Removing not null guard tests in ModelBinding
2014-03-25 12:35:33 -07:00
Ryan Nowak 86ac978451 Implementation of ViewComponents 2014-03-25 11:04:37 -07:00
David Fowler 699b146d1f Bumped the version of immutable collections. 2014-03-25 02:06:59 -07:00
dougbu d3217fd3af Cleanup warnings
- primary action is removing interfaces from Razor that Core exports
- also remove an unused field from Core's `DefaultControllerAssemblyProvider`
2014-03-22 18:58:23 -07:00
David Fowler 47b33b907f Removed System.Runtime.Hosting dependency 2014-03-22 15:17:11 -07:00
Ryan Nowak 89b53aab25 Fix API change in ITypeActivator 2014-03-21 18:16:02 -07:00
Ryan Nowak dc6843acf7 Move registration of nested provider infrastructure
The DI system has support for registering open generics now, so we can go
through that instead of directly through autofac.
2014-03-21 16:47:31 -07:00
N. Taylor Mullen 5b6eb307ae Re-plumb ModelState.
Modified ModelState to only ever be created on the ActionContext and then plumbed/exposed it on ViewData and Controller.  This will enable: ActionFilterContext's will have access to ModelState via its ActionContext member, allow HTMLHelpers to access ModelState via ViewData, and unify the locations of "source" model state.  In the old world we used to copy/replace/instantiate new model state all over unnecessarily.
2014-03-21 16:19:13 -07:00
dougbu 32d031c6eb Add `ModelMetadata` to `ViewData`
- demonstrate `ModelMetadata` is available in a view

Also
- simplify `View()` overloads in `Controller`, pending #110 decisions
- make `Model` in `RazorView<T>` readonly
2014-03-21 14:42:42 -07:00
harshgMSFT f20b798a07 Modifying the Default Action convention to have verb only methods 2014-03-21 12:34:42 -07:00
Pranav K f1c4a8e497 Change FormValueProviderFactory to use GetContentType for media type matching
Fixes #68
2014-03-21 12:10:12 -07:00
Ryan Nowak 1ca2203421 cr feedback 2014-03-21 11:13:15 -07:00
Ryan Nowak 6610788b75 Restore the TextWriter to ViewContext 2014-03-21 11:13:14 -07:00
Pranav K 8ea196023e Modify controller discovery to only look for types that reference Mvc.Core
assembly
2014-03-21 10:02:54 -07:00
Pranav K 683c5bf9b3 Adding JsonInputFormatter for reading json encoded data from the request
body
2014-03-20 20:48:25 -07:00
dougbu 4364986137 System.Text.Encoding has rev'd 2014-03-20 14:38:54 -07:00
Ryan Nowak c4a15f021f Passing additional data on the ViewContext for resolving views.
This will be necessary for partials, and for Components.

Basically, the view engine uses a dictionary of data to find the top level
view (for an action) - after we do that, we want this context to be
sticky, which means we need to pass it around. This ensures that partials
and components will be resolved under the same paths as the main view.

Currently this 'data' is just the route values - and there is an ongoing
discussing about the right design here. The data that's being passed WILL
change in the future.
2014-03-20 12:18:02 -07:00
Yishai Galatzer 8b6d39507d Feedback: Make common base class for all contexts and all of them expose FilterItem collection
ExtensionMethod will now apply to the base FilterContext class
2014-03-20 09:59:24 -07:00
Yishai Galatzer adffc95b81 AllowAnonymous attribute + Consumption + Sample 2014-03-20 09:59:24 -07:00
dougbu 5875452755 Quick fix-ups
- Move .NET test projects back into net45 folder
- Catch up with latest System.Runtime.InteropServices version
2014-03-19 23:41:17 -07:00
Yishai Galatzer dcc286a299 Refactor FindView to always take a viewName (no null support)
and only use RouteValues (or generically just Dictionary<string, object>).

This is temporary and will change once we get Partials (which are currently just dead code)

For now this will unblock ViewComponents
2014-03-19 18:48:36 -07:00
Pranav K f8dd52dfe3 Reintroducing BindingBehaviorAttribute attribute
* Porting MutableObjectModelBinder tests
* Fix issues in MutableObjectModelBinder introduced by changing from
  TypeDescriptors to reflection
2014-03-19 16:52:02 -07:00
harshgMSFT 9cd99a42a7 ActionExecutor implementation WebFx W113
The changes include:
1. Action executor changes required for supporting sync and async operations Taksk and Task
2. Adding test project for MVC core - This contains ActionExecutor Tests.
3. Also adding a resources file for MVC core project
2014-03-19 11:10:42 -07:00
dougbu 4bc7c36522 Merge two `TypeExtensions` classes into Common\TypeExtensions.cs
- add missing `[NotNull]` attributes
- remove now-unneeded usings for ...ModelBinding.Internal namespace

Also get ModelBinding test project working under CoreCLR
- create separate k10 and net45 folders under test in VS
- add `[InternalsVisibleTo]` to make `TypeExtensions` visible to test assembly
- correct tests' `CultureInfo` use to compile under CoreCLR
- ifdef out CoreCLR tests depending on Moq, ReadOnly, ...
- remove a couple of tests expecting TypeConverter to work
2014-03-19 09:53:40 -07:00
Yishai Galatzer 227121b3f9 CR Feedback 2014-03-19 09:26:20 -07:00
Yishai Galatzer 7d9a6297f9 Fix debug string 2014-03-19 09:26:19 -07:00
Yishai Galatzer cfb06c0de3 Areas feature - Phase I
1. Areas defined by the Area attribute
2. Areas are a routeconstraint on the actiondescriptor
3. Areas find pages through route values

Other changes:
1. Remove Path from ActionDescriptor - It doesn't make sense with this change
2. Add sample Area
2014-03-19 09:26:18 -07:00
Pranav K 072e2cc1f1 Updating DataAnnotations version in project.json 2014-03-18 20:56:08 -07:00
Pranav K eae9d3a951 Update GenericModelBinder.BindModel to use correct overload of
Activator.CreateInstance
2014-03-18 16:34:18 -07:00
dougbu 3a0add8be8 Cleanup pass: Move Rendering classes to correct namespace
- use Microsoft.AspNet.Mvc.Rendering namespace throughout assembly

Also
- move `IdAttributeDotReplacement` from `TagBuilder` to `HtmlHelper`
- remove commented-out code in `HtmlHelper`
- use `var` and `[NotNull]` more
- `String` -> `string`
- correct Resources references; add missing resources
2014-03-18 14:02:39 -07:00
dougbu 478c220ddb Revert "Merge two `TypeExtensions` classes into Common\TypeExtensions.cs"
This reverts commit d534471515.
2014-03-17 22:53:36 -07:00
dougbu f714425619 Revert "Address CR comments"
This reverts commit d815329f71.
2014-03-17 22:52:39 -07:00
dougbu d815329f71 Address CR comments
- reduce #if use
- remove outdated comment
2014-03-17 22:49:30 -07:00
dougbu d534471515 Merge two `TypeExtensions` classes into Common\TypeExtensions.cs
- add missing `[NotNull]` attributes
- remove now-unneeded usings for ...ModelBinding.Internal namespace
- remove TypeExtensionTests.cs; don't add .NET 4.5-only
  `[InternalsVisibleTo]` for low-level `IsCompatibleWith()` extension
2014-03-17 21:02:25 -07:00
N. Taylor Mullen f8179f03e4 Trigger view rendering asynchronously.
This is as simple as modifying the base class to return task and await the ExecuteAsync method.  Also added a piece to the sample project to verify functionality.
2014-03-17 12:18:54 -07:00
David Fowler 0247c3a393 Updated RoslynCompilationService to account for new changes to API 2014-03-16 23:42:50 -07:00