I was trying to use the following statement:
@Html.Test<ISQL>().Nand()
However, Razor is choking at the < before the ISQL.
Any official work around for it?
I was trying to use the following statement:
@Html.Test<ISQL>().Nand()
However, Razor is choking at the < before the ISQL.
Any official work around for it?
To use generic methods you need to escape the expression
@(Html.Test<ISQL>().Nand())
I just found this question when I was looking for this "same error" when upgrading mvc.
I had :
Does not work:
@{
ViewBag.Title = "Something " + @Model.Title;
var something = (IEnumerable<SelectListItem>)ViewBag.Options;
}
Apparently, the syntax went stricter, and as you are inside a @{} block, you should not add @ before Model.Title on the example. But the error on the code editor was pointing to the generic and it was getting me crazy.
It works fine if there is no <> inside the code, but just removing the @ from Model.Title fix the issue.
Works:
@{
ViewBag.Title = "Something " + Model.Title;
var something = (IEnumerable<SelectListItem>)ViewBag.Options;
}
Hope this helps to anyone
I appreciate that this 'answer' is somewhat late and the question has obviously been satisfactorily (and well) answered. However, for any future visitors to this page, if you're after a more complete reference guide there's the MS introduction to Razor syntax as well as Phil Haack's very useful Razor quick reference blog post.
I had a strange case when I had several assignments inside of one @{ ... }
bock.
@{
// ... other assignments (without error)
List<string> stringList = new List<string>() // ERROR MESSAGE HERE
}
What ever I did, there were always errors, like this:
Using the generic type 'List' requires one type arguments
The solution:
I put the assignment line to a second @{ ... }
bock.
@{
// ... other assignments
}
@{
List<string> stringList = new List<string>() // WORKS
}
It's about the @ character, this example works before upgrade
@{
string @class = ViewBag.@class;
IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
}
After upgrade, it must be separated into two blocks
@{ string @class = ViewBag.@class; }
@{ IDictionary<string, object> attrs = new Dictionary<string, object>(); }