2012-04-19 69 views
9

當我在我的剃鬚刀視圖中使用以下代碼時,它呈現<label for=""> someText</label>而不是<label for="">1. someText</label>,但我無法弄清楚爲什麼1.在呈現時被刪除。爲什麼@ Html.Label()刪除一些字符

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

編輯: 下面的代碼將呈現<label for="">1# someText</label>預期。

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

可能會嘗試引用一個對象?! – Treemonkey 2012-04-19 12:19:22

回答

20

您正在濫用Html.Label方法。它是:

返回一個HTML標籤元件和由指定的表達式所表示的屬性 的屬性名稱。

這就是爲什麼如果你在第一個參數一個點.,因爲它需要一個屬性表達式有迷糊。

但是,你可以使用第二個重載:

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

或者只是寫出來的HTML:

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

這就是我的想法,雖然你聽起來像你知道你在說什麼:D – Treemonkey 2012-04-19 12:24:35

+0

這真的幫了我,歡呼。 – Canvas 2015-06-09 11:53:12

+0

如果我的標籤文本來自數據庫,我不知道「。」存在於哪個位置? – 2016-03-04 13:11:50

0

你正在使用的語法是錯誤的,或者我們可以說,這是不一種使用RAZOR語法屬性的方法。 你可以使用這可能會幫助你完全。

**

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

**

1

你能避免使用「HTML幫助的標籤」,並直接使用任何你想要正確顯示HTML「標籤」和地點。它也可以節省一些時間;)

0

我用這個數據表包含一個雙(緯度/長),並看到了這個相同的問題。感謝提示(我不允許評論)。

對我來說,問題解決了..

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