MVC and RazorEngine rant
-
Alright, here's my four step tutorial on how to solve all your IT related issues: Step 1: Throw computer out of the window. Step 2: Enjoy a moment of pure joy. Step 3: Realize you needed that computer for work. Step 4: Live the rest of your life as a poor, but happy, hobo. You can thank me later :thumbsup:
public class SanderRossel : Lazy<Person>
{
public void DoWork()
{
throw new NotSupportedException();
}
}Sander Rossel wrote:
but happy, hobo.
I am sorely tempted. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
Pete O'Hanlon wrote:
It's the unholy mess that is ASP MVC that is the reason I use the MEAN stack.
I just encountered that acronym last week. Apparently there's a new book on Amazon on it. While I find myself very critical of the NoSQL movement, I'm also interested from people I respect as to their thoughts on it -- so, what are your experiences with MongoDB? Marc
Imperative to Functional Programming Succinctly Higher Order Programming
As long as you use Mongo for the right problem, it's very powerful and remarkably straightforward to use, especially if you use the Mongoose package. Certain problems require you to go outside of Mongo - for instance, when it comes to full text, I tend to use ElasticSearch instead because the full text support in Mongo isn't that clever. The hardest thing is to stop thinking of data in the way you think of it for an RDBMS. Once you get around that, and understand what concepts like map-reduce actually means, then you're well on your way to developing a good understanding of it. I'm delivering a talk on Socket.IO next month where I'll show MEN part of that stack (I'm not using Angular for the demo), and I'll hopefully be showing how easy it is to use this stack.
-
As long as you use Mongo for the right problem, it's very powerful and remarkably straightforward to use, especially if you use the Mongoose package. Certain problems require you to go outside of Mongo - for instance, when it comes to full text, I tend to use ElasticSearch instead because the full text support in Mongo isn't that clever. The hardest thing is to stop thinking of data in the way you think of it for an RDBMS. Once you get around that, and understand what concepts like map-reduce actually means, then you're well on your way to developing a good understanding of it. I'm delivering a talk on Socket.IO next month where I'll show MEN part of that stack (I'm not using Angular for the demo), and I'll hopefully be showing how easy it is to use this stack.
Pete O'Hanlon wrote:
I'm delivering a talk on Socket.IO next month where I'll show MEN part of that stack (I'm not using Angular for the demo), and I'll hopefully be showing how easy it is to use this stack.
If anyone records the talk, I'd be interested in watching it! Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
Pete O'Hanlon wrote:
I'm delivering a talk on Socket.IO next month where I'll show MEN part of that stack (I'm not using Angular for the demo), and I'll hopefully be showing how easy it is to use this stack.
If anyone records the talk, I'd be interested in watching it! Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
So, on the advise of SO, I installed RazorEngine so that I could generate some HTML directly from a template to create the body of a registration email. Why this can't be done in some simple way with Razor directly is beyond me, but nooo, one of the suggestions was to use RazorEngine. So I use the package manger to install it, it does a couple updates and I get this effing message: Inheritance security rules violated by type: 'System.Web.WebPages.Razor.WebPageRazorHost'. Derived types must either match the security accessibility of the base type or be less accessible. So I google around and everyone tells me to remove the dependency in web.config. Sure enough, that works. But NOW, after I deploy the app to WinHost (I don't think this is their fault), I get: Could not load file or assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) But of course. That makes total sense. NOT. :mad: So then I figure I ought to fix the root cause of the problem locally and not just delete the dependency in web.config. So I find this post.[^] Useful. Especially this (regarding my original error): Which could not be resolved by the solution listed in the reference, however after doing some research I found my answer in the update release notes. The "Removal of security transparent attribute. Note: This is a breaking change, and makes Razor 3 incompatible with MVC4 and earlier, while Razor 2 is incompatible with MVC5 or assemblies compiled against MVC5". OMFG. Really? So how the eff do I install Razor 2, I really don't give a rat's arse about compatibility with MVC5 (which, when reading about how to install that, looks like yet another rabbit hole of a nightmare I don't want to go down.) Wow Microsoft. In attempting to copy the garbage that is Ruby on Rails, I believe you have taken what was a slightly smelly pile of refuse and turned it into something that looks like
I feel your pain. It wasn't received well in the community either. I trashed a couple of projects just by using nuget after the mvc.dll change in the normal ms updates[^] It's been a bad ordeal, and not something you'd expect from vs, mvc, etc... I had tons of errors and lost a couple days before just starting over with a new project and importing all my code.
Elephant elephant elephant, sunshine sunshine sunshine
-
So, on the advise of SO, I installed RazorEngine so that I could generate some HTML directly from a template to create the body of a registration email. Why this can't be done in some simple way with Razor directly is beyond me, but nooo, one of the suggestions was to use RazorEngine. So I use the package manger to install it, it does a couple updates and I get this effing message: Inheritance security rules violated by type: 'System.Web.WebPages.Razor.WebPageRazorHost'. Derived types must either match the security accessibility of the base type or be less accessible. So I google around and everyone tells me to remove the dependency in web.config. Sure enough, that works. But NOW, after I deploy the app to WinHost (I don't think this is their fault), I get: Could not load file or assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) But of course. That makes total sense. NOT. :mad: So then I figure I ought to fix the root cause of the problem locally and not just delete the dependency in web.config. So I find this post.[^] Useful. Especially this (regarding my original error): Which could not be resolved by the solution listed in the reference, however after doing some research I found my answer in the update release notes. The "Removal of security transparent attribute. Note: This is a breaking change, and makes Razor 3 incompatible with MVC4 and earlier, while Razor 2 is incompatible with MVC5 or assemblies compiled against MVC5". OMFG. Really? So how the eff do I install Razor 2, I really don't give a rat's arse about compatibility with MVC5 (which, when reading about how to install that, looks like yet another rabbit hole of a nightmare I don't want to go down.) Wow Microsoft. In attempting to copy the garbage that is Ruby on Rails, I believe you have taken what was a slightly smelly pile of refuse and turned it into something that looks like
Registration page....why not go with static html and grab the data in the controller? (Use knockout if you need to). Be careful with MongoDB. If you need indexes on sub-forms (usually array fields) it will bog down when collection grows. For the right project MongoDB is awesome. Cheers (but I feel the pain).
-
So, on the advise of SO, I installed RazorEngine so that I could generate some HTML directly from a template to create the body of a registration email. Why this can't be done in some simple way with Razor directly is beyond me, but nooo, one of the suggestions was to use RazorEngine. So I use the package manger to install it, it does a couple updates and I get this effing message: Inheritance security rules violated by type: 'System.Web.WebPages.Razor.WebPageRazorHost'. Derived types must either match the security accessibility of the base type or be less accessible. So I google around and everyone tells me to remove the dependency in web.config. Sure enough, that works. But NOW, after I deploy the app to WinHost (I don't think this is their fault), I get: Could not load file or assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) But of course. That makes total sense. NOT. :mad: So then I figure I ought to fix the root cause of the problem locally and not just delete the dependency in web.config. So I find this post.[^] Useful. Especially this (regarding my original error): Which could not be resolved by the solution listed in the reference, however after doing some research I found my answer in the update release notes. The "Removal of security transparent attribute. Note: This is a breaking change, and makes Razor 3 incompatible with MVC4 and earlier, while Razor 2 is incompatible with MVC5 or assemblies compiled against MVC5". OMFG. Really? So how the eff do I install Razor 2, I really don't give a rat's arse about compatibility with MVC5 (which, when reading about how to install that, looks like yet another rabbit hole of a nightmare I don't want to go down.) Wow Microsoft. In attempting to copy the garbage that is Ruby on Rails, I believe you have taken what was a slightly smelly pile of refuse and turned it into something that looks like
Marc Clifton wrote:
I installed RazorEngine so that I could generate some HTML directly from a template to create the body of a registration email.
Ain't
string.Replace
, simple enough? I never had any problems with Razor the way it is meant to be used with MVC (rendering views).To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia
-
Marc Clifton wrote:
I installed RazorEngine so that I could generate some HTML directly from a template to create the body of a registration email.
Ain't
string.Replace
, simple enough? I never had any problems with Razor the way it is meant to be used with MVC (rendering views).To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia
Fabio Franco wrote:
Ain't
string.Replace
, simple enough?You're absolutely right, but I thought I might see how this is done for something simple (where string.Replace would indeed work much less painfully) in case I want to use RazorEngine for something more complicated later on. So, in some ways, it's good I learned about this now. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
Registration page....why not go with static html and grab the data in the controller? (Use knockout if you need to). Be careful with MongoDB. If you need indexes on sub-forms (usually array fields) it will bog down when collection grows. For the right project MongoDB is awesome. Cheers (but I feel the pain).
charliebear24 wrote:
Be careful with MongoDB. If you need indexes on sub-forms (usually array fields) it will bog down when collection grows.
I hope to go to my grave without ever having to use a NoSQL database.
charliebear24 wrote:
Registration page....why not go with static html and grab the data in the controller? (Use knockout if you need to).
Ah, so many different solutions, so little time. ;) Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
Fabio Franco wrote:
Ain't
string.Replace
, simple enough?You're absolutely right, but I thought I might see how this is done for something simple (where string.Replace would indeed work much less painfully) in case I want to use RazorEngine for something more complicated later on. So, in some ways, it's good I learned about this now. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
Got ya, I'm sorry I can't give you any advice on a good tool for that. I never had to do anything overly complicated
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia
-
As long as you use Mongo for the right problem, it's very powerful and remarkably straightforward to use, especially if you use the Mongoose package. Certain problems require you to go outside of Mongo - for instance, when it comes to full text, I tend to use ElasticSearch instead because the full text support in Mongo isn't that clever. The hardest thing is to stop thinking of data in the way you think of it for an RDBMS. Once you get around that, and understand what concepts like map-reduce actually means, then you're well on your way to developing a good understanding of it. I'm delivering a talk on Socket.IO next month where I'll show MEN part of that stack (I'm not using Angular for the demo), and I'll hopefully be showing how easy it is to use this stack.
Pete O'Hanlon wrote:
As long as you use Mongo for the right problem,
Yep.
Pete O'Hanlon wrote:
Once you get around that, and understand what concepts like map-reduce actually means, then you're well on your way to developing a good understanding of it.
Keeping in mind of course that this is only true if it is still based on your first requirement that it is used for right problem in the first place. If it isn't used for the right problem then one tends to end up with 'solutions' that are similar to medieval surgery (hack and hope it lives.)
-
Pete O'Hanlon wrote:
As long as you use Mongo for the right problem,
Yep.
Pete O'Hanlon wrote:
Once you get around that, and understand what concepts like map-reduce actually means, then you're well on your way to developing a good understanding of it.
Keeping in mind of course that this is only true if it is still based on your first requirement that it is used for right problem in the first place. If it isn't used for the right problem then one tends to end up with 'solutions' that are similar to medieval surgery (hack and hope it lives.)
jschell wrote:
Keeping in mind of course that this is only true if it is still based on your first requirement that it is used for right problem in the first place
Oh, definitely. There is a temptation to see everything as a document shaped problem if you aren't too rigorous with yourself.
-
So, on the advise of SO, I installed RazorEngine so that I could generate some HTML directly from a template to create the body of a registration email. Why this can't be done in some simple way with Razor directly is beyond me, but nooo, one of the suggestions was to use RazorEngine. So I use the package manger to install it, it does a couple updates and I get this effing message: Inheritance security rules violated by type: 'System.Web.WebPages.Razor.WebPageRazorHost'. Derived types must either match the security accessibility of the base type or be less accessible. So I google around and everyone tells me to remove the dependency in web.config. Sure enough, that works. But NOW, after I deploy the app to WinHost (I don't think this is their fault), I get: Could not load file or assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) But of course. That makes total sense. NOT. :mad: So then I figure I ought to fix the root cause of the problem locally and not just delete the dependency in web.config. So I find this post.[^] Useful. Especially this (regarding my original error): Which could not be resolved by the solution listed in the reference, however after doing some research I found my answer in the update release notes. The "Removal of security transparent attribute. Note: This is a breaking change, and makes Razor 3 incompatible with MVC4 and earlier, while Razor 2 is incompatible with MVC5 or assemblies compiled against MVC5". OMFG. Really? So how the eff do I install Razor 2, I really don't give a rat's arse about compatibility with MVC5 (which, when reading about how to install that, looks like yet another rabbit hole of a nightmare I don't want to go down.) Wow Microsoft. In attempting to copy the garbage that is Ruby on Rails, I believe you have taken what was a slightly smelly pile of refuse and turned it into something that looks like
-
Peter Shaw wrote:
I guess i gotta step in and save all your asses then
:) Swig looks cool, but I really do not want to be coding in JavaScript as the primary language, especially on the server-side, which is also why I'm not particularly interested in node.js, though at some point I'll take a poke at is. Marc, the Biased :)
Imperative to Functional Programming Succinctly Higher Order Programming
-
Peter Shaw wrote:
I guess i gotta step in and save all your asses then
:) Swig looks cool, but I really do not want to be coding in JavaScript as the primary language, especially on the server-side, which is also why I'm not particularly interested in node.js, though at some point I'll take a poke at is. Marc, the Biased :)
Imperative to Functional Programming Succinctly Higher Order Programming
It's not as bad as it looks Marc :-) and this is coming from someone who'd still write everything directly in ASM if it was an accepted route...
-
It's not as bad as it looks Marc :-) and this is coming from someone who'd still write everything directly in ASM if it was an accepted route...
Peter Shaw wrote:
and this is coming from someone who'd still write everything directly in ASM if it was an accepted route...
Heh. I'm with you there! I did take a closer look, and yes, it doesn't look that bad. What I'd love though is for a proper "page designer" that would just figure out all the damn CSS, HTML, model, and "view-code" for whatever view engine I want to use. Doing web development is like going back to the stone ages. Or probably more accurately, being thrown into the cockpit of a 747 and told to land the plane with a 50 MPH crosswind on instruments alone. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
Peter Shaw wrote:
and this is coming from someone who'd still write everything directly in ASM if it was an accepted route...
Heh. I'm with you there! I did take a closer look, and yes, it doesn't look that bad. What I'd love though is for a proper "page designer" that would just figure out all the damn CSS, HTML, model, and "view-code" for whatever view engine I want to use. Doing web development is like going back to the stone ages. Or probably more accurately, being thrown into the cockpit of a 747 and told to land the plane with a 50 MPH crosswind on instruments alone. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
I might actually be able to help you there... well if I ever get the project I started finished :-) one of my many temporarily abandoned ones.
-
I might actually be able to help you there... well if I ever get the project I started finished :-) one of my many temporarily abandoned ones.
Peter Shaw wrote:
I might actually be able to help you there...
Landing a 747? ;) Actually, I'm using Razor at the moment for a fun little pro-bono project, putting together a website for the Dartmouth MA Department of Public Works -- did we talk about that before? If you want to get involved, the code base is here[^] and the website is here[^] -- takes forever to spin up. I'm looking into Razor Generator[^] to speed up the first-time page loads. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
-
Peter Shaw wrote:
I might actually be able to help you there...
Landing a 747? ;) Actually, I'm using Razor at the moment for a fun little pro-bono project, putting together a website for the Dartmouth MA Department of Public Works -- did we talk about that before? If you want to get involved, the code base is here[^] and the website is here[^] -- takes forever to spin up. I'm looking into Razor Generator[^] to speed up the first-time page loads. Marc
Imperative to Functional Programming Succinctly Higher Order Programming
That too.... :laugh: