Robert
Robert

Reputation: 1794

Razor syntax - using two variables in string

SomeObject record = new SomeObject();
record.value1 = 1;
record.value2 = "hello";

<td><input type="checkbox" id="[email protected][email protected]" /><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 "[email protected]@[email protected]" 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.

Upvotes: 9

Views: 15530

Answers (2)

Floremin
Floremin

Reputation: 4089

If you need something like this, I'd suggest adding that field (i.e. CheckboxID) to your model and populate it on the server side, before passing it to the view.

Upvotes: 1

Tim M.
Tim M.

Reputation: 54377

@{
    // 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.

Upvotes: 20

Related Questions