2012-10-16 66 views
3

目前它將HTML作爲字符串返回。有沒有一種簡單的方法可以正確輸出HTML?Html.LabelFor HTML和HTML標籤文本

@Html.LabelFor(m => m.DisplayName, 
       Html.Raw(Html.Partial("_Tooltip", new Tooltip { 
            Title = Model.DisplayName, 
            Description = "This is my test description"} 
            ).ToString()) 
        .ToString()) 
+0

你是什麼意思「它將HTML作爲字符串返回」?你的意思是它仍然被編碼? –

+0

這正是輸出是這樣的:'的顯示名稱的 THIS IS MY測試說明' – endyourif

+0

你會怎樣想它輸出? –

回答

1

我能夠通過爲它創建一個擴展方法,下面這個例子來解決這個問題:http://weblogs.asp.net/imranbaloch/archive/2010/07/03/asp-net-mvc-labelfor-helper-with-htmlattributes.aspx

所不同的是我更新了這個:

tagBuilder.SetInnerText(innerText); 

要這樣:

tagBuilder.InnerHtml = innerText; 
+0

請注意,通過使開發人員在頁面中意外地包含未轉義的HTML,您可以輕鬆應對跨站腳本攻擊。小心不要將此方法與任何用戶定義的數據一起用作標籤文本。 – StriplingWarrior

1

如何使用普通的HTML?

<label for="DisplayName"> 
    @Html.Partial("_Tooltip", new Tooltip { Title = Model.DisplayName, Description = "This is my test description" } 
</label> 

你正在運行到的問題是,LabelFor助手自動HTML-逃脫的標籤,假設你通過它只是不應該有HTML中有一個正常的字符串。

0

如果你不想讓原始的HTML,除去Html.Raw()功能如下:

@Html.LabelFor(m => m.DisplayName, Html.Partial("_Tooltip", new Tooltip { Title = Model.DisplayName, Description = "This is my test description" }).ToString().ToString()) 
+0

我以前嘗試過,沒有Html.Raw,也沒有運氣。 – endyourif