Razor syntax - using two variables in string

c#, razor

Solution

@{
    // just for testing
    var record = new { value1 = "foo", value2 = "bar" };
}

<input type="checkbox" id="indicator_@( record.value1 + "_" + record.value2 )">

Gives: `<input type="checkbox" id="indicator_foo_bar">`

Just make sure that you aren't building an ID which would be better auto-generated by the natural hierarchy of your view model. Most of the time, you shouldn't need to manually construct IDs in your view.

Problem

``` SomeObject record = new SomeObject(); record.value1 = 1; record.value2 = "hello"; <td><input type="checkbox" id="indicator_@record.value1_@record.value2" /><td> ``` What is the proper razor syntax to create a checkbox with an id of "indicator_1_hello"? When attempting this way, it says the object doesn't contain a definition for value1_ (understandable) and when I tried "indicator_@record.value1@_@record.value2" if had a runtime error about something named _ not existing in the context (again, understandable). edit: As a temporary solution I've done: ``` SomeObject record = new SomeObject(); record.value1 = 1; record.value2 = "hello"; var combined = String.Format("{0}_{1}", record.value1, record.value2); <td><input type="checkbox" id="indicator_@combined" /><td> ``` I am still curious if you can do it all inline though.

Original source