Fixes #11904 TypeFeatureProvider throws if a Razor Page has no PageModel #11905
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #11904
We now can use the
[Feature()]
attribute on a razorPageModel
if it is a component, meaning a non abstract public class, e.g. not an internal class when defined in a razor page itself, and we use theITypeFeatureProvider
to retrieve the feature related to a givenPageModel
.The problem is that when no
PageModel
is defined for a razor page, e.g. only@functions
handlers, the related pageModelType
is then of typeObject
which is non abstract and public, so considered as a component.In that case
ITypeFeatureProvider.GetFeatureForDependency(pageModelType)
throw an exception.A quick solution was to change the following by also checking the
Object
type.But I think it is better and simpler to just check if the page
ModelType
has a custom attribute of typeFeatureAttribute
, and if so just use it to retrieve the related feature.@ns8482e if you can take a look ;)