I am migrating a project from MVC 2 to MVC3 and the razor view engine.
In MVC 2, I would have the following html:
<div id="del_<%= Model.ActivityID.ToString() %>"></div>
When using razor, I tried the following, which renders the literal text "[email protected]()" when I want del_1.
<div id="[email protected]()"></div>
To get around the issue, I used:
<div id="@Model.ActivityID.ToString()_del"></div>
Is there away to make razor work with this syntax?
<div id="[email protected]()"></div>
Razor is a markup syntax that lets you embed server-based code into web pages using C# and VB.Net. It is not a programming language. It is a server side markup language.
Razor is a markup syntax for embedding . NET based code into webpages. The Razor syntax consists of Razor markup, C#, and HTML.
Right-click on the Views/HelloWorld folder, and then Add > New Item. In the Add New Item - MvcMovie dialog: In the search box in the upper-right, enter view. Select Razor View - Empty.
You'll have to use the @()
around your particular model value like so:
<div id="del_@(Model.ActivityID.ToString())"></div>
The reason for this is because the [email protected]
looks like an email address to the parser and by default the parser tries to ignore email addresses so you don't have to do something silly like john@@doe.com
as emails are common enough that it would be annoying to do every time. So the people working on the razor parser just figured: "if it looks like an email, ignore it". So that's why you're having this particular issue.
<div id="del_@(Model.ActivityID.ToString())"></div>
In case you didn't see the trick: use @( )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With