开发者

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!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜