Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Razor Syntax Dynamically Name HTML Elements

I have a form that creates a number of checkbox elements using Razor code like this

   foreach (var tag in Model.Tags)
    {
        <input type="checkbox" id="@tag.ID" name="@tag.ID" value="@tag.TagName"/>@tag.TagName<br /
    }

This works but I want the ID's and names to be in this format chkTag[TagID] I've tried this

<input type="checkbox" id="[email protected]" name="[email protected]" value="@tag.TagName"/>

but Razor just treats the whole thing as string and names them [email protected].

So I guess my question is how do I add the dynamic razor ID to the end of my Name and ID's?

Thanks

like image 847
Gavin Avatar asked Jul 27 '11 06:07

Gavin


2 Answers

You should use parentheses around tag.ID, like this:

chkTag@(tag.ID)

Full code:

foreach (var tag in Model.Tags)
{
    <input type="checkbox" id="chkTag@(tag.ID)" name="chkTag@(tag.ID)" value="@tag.TagName"/>
}
like image 50
David Rettenbacher Avatar answered Nov 03 '22 08:11

David Rettenbacher


@for (int i = 0; i < Model.Tags.Count(); i++)
{

        @Html.CheckBoxFor(model => Model.Tags[i])

}

This should do it normally. It will automatically give the correct name.

like image 41
Kevin Cloet Avatar answered Nov 03 '22 08:11

Kevin Cloet