Comments (3)
The problem appears to be in TemplateService::SetModel, and in particular the following code
var staticModel = template as ITemplate;
if (staticModel != null)
staticModel.Model = model;
This doesn't work because of this:
http://stackoverflow.com/questions/245607/how-is-generic-covariance-contra-variance-implemented-in-c-sharp-4-0/246101#246101
Basically I think what you need to do is grab the model type implemented by the template and see if the current model can be assigned to it. Something like this:
var type = template.GetType();
if (type.BaseType.GetGenericArguments()[0].IsAssignableFrom(typeof(T)))
{
// Do some magic here to set the model on the template, possibly via reflection...?
}
from razorengine.
Ok, I managed to solve this via some reflection. It's not pretty but it works.
I replaced this
var staticModel = template as ITemplate<T>;
if (staticModel != null)
staticModel.Model = model;
with this
var type = template.GetType();
if (type.BaseType.IsGenericType
&& type.BaseType.GetGenericArguments()[0].IsAssignableFrom(typeof(T)))
{
var propertyInfo = type.BaseType.GetProperty("Model");
propertyInfo.SetValue(template, model, null);
}
Apologies for not submitting a patch for this, but I'm not a Git user...
from razorengine.
I see what you are describing. Will investigate.
from razorengine.
Related Issues (20)
- Package RazorEngine.NetCore 3.1.0 is not compatible with net50 HOT 1
- System.IO.FileNotFoundException: 'Could not load file or assembly 'System.CodeDom, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.' HOT 2
- Access to the path CompiledRazorTemplates.Dynamic.RazorEngine is denied
- RazorEngine Render ViewComponent And TagHelpers
- - error: (25, 6) The name 'model' does not exist in the current context - error: (18, 19) There is no argument given that corresponds to the required formal parameter 'componentContext' of 'ViewBase<InteractiveSubjectPageExportReport>.ViewBase(IComponentContext)'
- Image doesn't render HOT 1
- Anouncement: Security with `IsolatedRazorEngineService` HOT 4
- The name 'model' does not exist in the current context HOT 4
- Engine.Razor.Compile, Cant Locad Resource
- Vulnerability Remediation HOT 1
- How to fetch list of model keys from razor file?
- Exception 'Dynamic operations can only be performed in homogenous AppDomain'
- Build issue with v2 odata queries?
- When I use RazorEngine again, the input '' is transferred to&# 39. How can I solve this problem?
- action failed due to exception RazorEngine.Templating.TemplateCompilationException: Errors while compiling a Template.
- #115 The problem is not resolved in RazorEngine.NetCore HOT 3
- cshtml file with model in console app
- 'AppDomainSetup' does not contain a constructor that takes 0 arguments HOT 6
- encounter errors when use @Include in template
- Another Razor issue on flush with dynamic or anonymous types
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from razorengine.