'How can a razor for loop be used in a javascript script tag?
The error generated is "Conditional Compilation is turned off".
Conditional Compilation hack from MSDN is prevalent but fails.
There are several questions like this one: Conditional Compilation is turned off in Razor?
They all point to the answer of:
/*@cc_on @*/
From the article seen here at the MSDN:
http://msdn.microsoft.com/en-us/library/5y5529x3(v=vs.90).aspx
However, this hack is pretty fail or I seem to fail at implementing it. The trailing @*
causes the remaining code in the .cshtml file to become commented out. Moreover, @cc_on
gives an error "cc_on does not exist in the current context".
Here is a piece of code to test in a .cshtml file:
<script type="text/javascript">
@for(int i = 0; i < 5; i++)
{
document.write(@i);
}
</script>
Which will cause the "Conditional Compilation is turned off" message. Attempting to insert the workaround in there will cause various other messages such as "cc_on" does not exist in the context", "expected ,", or "expected ;", or "expected )" from the for loop.
How can a razor for loop be used in a javascript script tag?
Solution 1:[1]
Try surrounding your js with <text></text>
<script type="text/javascript">
@for(int i = 0; i < 5; i++)
{
<text>var that = this;</text>
}
</script>
Solution 2:[2]
I need to loop over a model attribute and just serialized it.
<script type="text/javascript">
var items = @Html.Raw(Json.Serialize(Model.items))
items.forEach(function (item) {
console.log(item)
})
</script>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Kyle Trauberman |
Solution 2 | reubano |