I\'m using MVC3 and I wanted to use a partial view to create dynamic DOM elements. This is my current partial view:
@model MVCApp.ViewModels.TitlesViewModel
<
Here is what you need to do.
id="label_@Model.Id"
Underscore(_) is required.For me passing id without Underscore made an issue. Happy conding.
Try this (verified):
<div id="@("label"+Model.Id)" class="display-field">@Model.InitValue</div>
You want:
<div id="label@Model.Id" ...
Razor will recognise the @ as the start of code, execute it and render the results in place in the attribute.
Edit:
This didn't work well as a comment, but here's a line from one of my Razor controls:
<input type="text" readonly="readonly"
class="display-field display-field-@ViewData.ModelMetadata.PropertyName"
id="@((ViewData["id"] == null) ?
ViewData.ModelMetadata.PropertyName : ViewData["id"])"
value="@Proj.GetJobStatusValue(Model)" />
Try adding a hyphen (-) before the @. It's quite possible that Razor thinks it's an e-mail address and leaving it alone!
Just adding another option as this is what worked for me when trying to concat string and model value as id in an @html.ActionLink and also for the text value. I needed to use string.Concat. Don't know if this is bad from a performance point of view.
@Html.ActionLink(string.Concat("View all (", @Model.FooCount, ")"),
//actionName
"SeeAllFoos",
//ControllerName
"Foo",
// routeValues
new { FooId = @Model.Foo.id },
//htmlAttributes
new { @class = "btn btn-success", onclick = "ShowProgress();",
id = string.Concat("Foo",@Model.Foo.id.ToString()) })