Is there a way to concatenate strings in html attributes?
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
<div class="display-label">Name</div>
<div id="label"+"@Model.Id" class="display-field">@Model开发者_运维问答.InitValue</div>
Model.Id is 1 but in the HTML in the browser, I currently get:
id="label"+"1"
So if I try and do something like:
alert($("#label1").text())
There's an alert box with nothing in it.
So how can I add the two strings together to form one coherent string that is recognized by jQuery (or document.getElementByID(str) for that matter).
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()) })
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.
id="@("label")@Model.Id"
Adding underscore(_) id="label_@Model.Id"
or hyphen (-) id="label-@Model.Id"
to separate could also help. Have a great day!
精彩评论