Asp.net mvc 3 MVC3 Razor连接问题

Asp.net mvc 3 MVC3 Razor连接问题,asp.net-mvc-3,concatenation,razor,Asp.net Mvc 3,Concatenation,Razor,我试图通过执行以下操作为输入创建一个id id="@ViewData.ModelMetadata.ContainerType.Name + "_" + @ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate")" 但它是通过id=“propertyName+”实现的。在剃须刀视图中,如何用中间的下划线将这两个连接起来? 如下: id="@(ViewData.ModelMetadata.ContainerType.Name)_@(View

我试图通过执行以下操作为输入创建一个id

    id="@ViewData.ModelMetadata.ContainerType.Name + "_" +  @ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate")"
但它是通过id=“propertyName+”实现的。在剃须刀视图中,如何用中间的下划线将这两个连接起来?

如下:

id="@(ViewData.ModelMetadata.ContainerType.Name)_@(ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"
id="@string.Format("{0}_{1}", ViewData.ModelMetadata.ContainerType.Name, ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"
或者像这样:

id="@(ViewData.ModelMetadata.ContainerType.Name)_@(ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"
id="@string.Format("{0}_{1}", ViewData.ModelMetadata.ContainerType.Name, ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"
您可以使用
@(表达式)
语法来表示显式代码表达式

此处需要显式,因为
@ViewData.ModelMetadata.ContainerType.Name
后面的空格不是C#标识符的有效字符,因此求值过程停止在此处

Razor用于处理隐式代码表达式的算法如下:

  • 解析一个标识符——一旦我们看到一个字符在C#或VB标识符中无效,我们就停止并转到步骤2
  • 检查括号-如果我们看到“(”或“[”,请转至步骤2.1。否则,请转至步骤3
  • 解析直到匹配“)”或“]”(我们跟踪嵌套的“()”和“[]”对,忽略字符串或注释中的“()[]”)
  • 返回步骤2
  • 检查“.”-如果我们看到一个,请转至步骤3.1,否则,不要接受“.”作为代码,然后转至步骤4
  • 如果“.”后面的字符是有效标识符,请接受“.”并返回步骤1,否则,返回步骤4
  • 完成了 (摘自)