Razor语法 - 在字符串中使用两个变量

时间:2013-03-07 18:12:29

标签: c# razor

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

<td><input type="checkbox" id="indicator_@record.value1_@record.value2" /><td>

创建id为“indicator_1_hello”的复选框有什么正确的剃刀语法?

尝试这种方式时,它表示对象不包含value1_的定义(可理解),当我尝试“indicator_@record.value1 @ _ @ record.value2”时,如果遇到名为_ not的运行时错误存在于上下文中(再次,可以理解)。

编辑:

作为我已经完成的临时解决方案:

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>

我仍然很好奇你是否可以全部内联。

2 个答案:

答案 0 :(得分:14)

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

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

给予:<input type="checkbox" id="indicator_foo_bar">

确保您没有构建一个ID,该ID可以通过视图模型的自然层次结构更好地自动生成。大多数情况下,您不需要在视图中手动构建ID。

答案 1 :(得分:1)

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