After upgrading an ASP.NET MVC 3 project to MVC 4 I noticed a change in the Razor parser that threw a Parser Error saying: 'Unexpected "string" keyword after "@" character. Once inside code, you do not need to prefix constructs like "string" with "@"'
Firstly this has always working when it was MVC 3 and Razor v1. I may have been getting the syntax wrong all along but if the syntax allowed it was it really wrong?
What I was doing was trying to put some server code in a Razor helper with no surrounding HTML tags, like this example:
@helper Currency1000s(int? value) { if(value == null) {- } else { @string.Format("{0:C0}k", value / 1000.0) } }
Interestingly if I were to replace line 9 with @value
all would be fine. Anyway, it is an easy enough fix, you just need to wrap the string.Format in HTML tags or the text tags as I did here:
@helper Currency1000s(int? value) { if(value == null) {- } else {@string.Format("{0:C0}k", value / 1000.0) } }