2013-03-07 3 views
5
SomeObject record = new SomeObject(); 
record.value1 = 1; 
record.value2 = "hello"; 

<td><input type="checkbox" id="[email protected][email protected]" /><td> 

Что такое правильный синтаксис бритвы, чтобы создать флажок с идентификатором «indicator_1_hello»?Синтаксис бритвы - используя две переменные в строке

При попытке этого способа он говорит, что объект не содержит определения для value1_ (понятно), и когда я попытался «[email protected] @ _ @ record.value2», если возникла ошибка времени выполнения, не существующий в контексте (опять же, понятный).

редактировать:

В качестве временного решения я сделал:

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="[email protected]" /><td> 

Я до сих пор интересно, если вы можете сделать это все инлайн, хотя.

ответ

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

<input type="checkbox" id="[email protected](record.value1 + "_" + record.value2)"> 

Дает: <input type="checkbox" id="indicator_foo_bar">

Просто убедитесь, что вы не строите идентификатор, который будет лучше автоматически генерируется естественной иерархией вашей модели представления. В большинстве случаев вам не нужно вручную создавать идентификаторы в своем представлении.

1

Если вам нужно что-то вроде этого, я бы предложил добавить это поле (то есть CheckboxID) к вашей модели и заполнить его на стороне сервера, прежде чем передавать его в представление.