Razor syntax - using two variables in string

2019-06-19 00:34发布

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.

标签: c# razor
2条回答
ら.Afraid
2楼-- · 2019-06-19 00:43

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.

查看更多
趁早两清
3楼-- · 2019-06-19 00:54
@{
    // 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.

查看更多
登录 后发表回答