Is it possible to use a generic model in ASP.NET MVC 3 (w/ Razor)? The following fails with a syntax error:
@model DtoViewModel<T> where T : IDto
Is it possible to use a generic model in ASP.NET MVC 3 (w/ Razor)? The following fails with a syntax error:
@model DtoViewModel<T> where T : IDto
This is not ideal, but it works and could get pretty creative with this pattern.
given that @model is expecting a type - not a type declaration you could use:
and take advantage of generic covariance
I found this thread and did some further digging. Looks like the feature is on the 2.2.0 backlog. If anyone wants to get involved you can check out the issue on Github. https://github.com/aspnet/Mvc/issues/7152
Such syntax is not supported by Razor, sorry.
Assuming, you want to use a generic type in order to avoid code duplications in each view of
ViewModel<T>
you can do it this way:1. create a view for the parts of
ViewModel<T>
that are unique to the viewModelView.cshtml:
2. create a view for the common parts, that should be rendered in each view of
<T>
Grid.cshtml:
Since it's a partial view, you don't need to declare the type of
Model
again. It will simply use the model you defined in the parent view, that renders it. The propertyIList<T> PageItems
of your model, will remain strongly typed with<specificType>
.3. Don't forget to actually render the partial view of your common parts
ModelView.cshtml: