为什么@ Html.Label()会删除一些字符

时间:2012-04-19 12:11:41

标签: asp.net-mvc-3 razor

当我在剃刀视图中使用以下代码时,它会呈现<label for=""> someText</label>而不是<label for="">1. someText</label>,但我无法弄清楚为什么在呈现时删除了1.

@Html.Label(String.Format("{0}. someText",1))

编辑: 以下代码按预期呈现<label for="">1# someText</label>

@Html.Label(String.Format("{0}# someText",1))

4 个答案:

答案 0 :(得分:21)

您滥用Html.Label方法。这是为了:

  

返回HTML标签元素和属性的属性名称   由指定的表达式表示。

这就是为什么如果你在第一个参数中有一个点.就会感到困惑,因为它需要一个属性表达式。

但是,您可以使用第二个重载:

@Html.Label("", String.Format("{0}. someText",1))

或者只写出HTML:

<label>@String.Format("{0}. someText", 1)</label>

答案 1 :(得分:1)

您可以避免使用&#34; Html Helper的标签&#34;并直接使用html&#34; label&#34;放置任何你想要正确显示的东西。它还可以节省一些时间;)

答案 2 :(得分:0)

您使用的语法是错误的或我们可以说这不是使用RAZOR语法属性的方法。 你可以用它来帮助你。

**

 @Html.LabelFor(model => model.PropertyName, 
       String.Format("{0}. " + @Model.PropertyName.ToString() + ",1))

**

答案 3 :(得分:0)

我正在将它用于包含double(Lat / Long)的数据表,并且看到了同样的问题。感谢您的提示(我不允许发表评论)。

对我来说,问题已经解决了。

@foreach (var cell in item.ItemArray)
{
  <td>
     @Html.Label("",cell.ToString().Trim())
  </td>
 }