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

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

创建ID为“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">

只要确保你没有建立这将是一个更好的ID自动生成您的视图模型的自然层次。大多数情况下,您不需要在视图中手动构建ID。

1

如果你需要这样的东西,我会建议在你的模型中添加这个字段(即CheckboxID),并在将它传递给视图之前将其填充到服务器端。