2010-09-13 56 views
1

在asp.net mvc 2視圖中我試圖渲染一些東西,如果是true。Html.Encode不起作用,至少不是我認爲應該

在下面的代碼中,我試圖使用Html.Encode(x)將值呈現到頁面中,但它不會呈現任何內容。 if語句與html.encode有什麼錯誤?

作品

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%> 
    <%: entry.Amount %> 
    <%}%> 

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) { 
    Html.Encode(entry.Amount); 
    }%> 

回答

3

的問題是,您實際上並不添加任何響應流。這沒有什麼錯了Html.Encode的,但你需要做這樣的事情:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) { 
    Response.Write(Html.Encode(entry.Amount)); 
}%> 

編輯:這麼說,我覺得你的第一個版本是更好的,除非你有尖括號:)

+0

尖括號沒有問題,它只是棘手的醜陋看,不能顯示代碼給孩子,否則我放棄我的權利,抱怨他們的手寫:) – mamu 2010-09-13 20:53:14

+0

只是爲了澄清上述答案:<%=表達式%>是一個簡寫爲Response.Write(表達式) – 2010-09-14 12:34:07

4

要調用的代碼塊了Html.Encode,但是,這並不意味着結果被寫入到輸出流不工作。嘗試:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%> 
    <%= Html.Encode(entry.Amount) %> 
<%}%> 

或更短

<%= ViewData.ContainsKey("DisplayQtyPrice") ? null : Html.Encode(entry.Amount) %> 
+0

我認爲<%:entry.Amount%>與您在第一塊代碼中的建議相同,是的,這是正確的方法做到這一點 – mamu 2010-09-14 03:58:58

0
問題

如果您使用Visual Studio 2008和/或.NET 3.5,您必須編碼您的輸出是這樣的:

不得不這樣做,這是到處都是拖.NET開發人員簡化謝天謝地確保在.NET 4中的HTML安全性通過完全的語法消除這方面的需求:

它只是一個可用性的改善;閱讀this爲完全絕地信用:

相關問題