![](/img/trans.png)
[英]Passing javascript array from view to controller in ASP.Net MVC 5
[英]ASP.NET MVC Passing Raw HTML from Controller to View
這幾天我一直在摸不着頭腦,我不確定這是我的環境問題還是基於 ASP.NET MVC 的代碼本身的問題(盡管我有 5 年的 C# 經驗)。 我正在使用帶有所有補丁的 Win7x64 和 VS 2008 最近的全新安裝。
我將原始 HTML 存儲在數據庫表中,控制器根據我無法控制的一些規則選擇性地加載該表。 不幸的是,當嘗試將值填充到控件中的視圖數據中時,如下所示:
ViewData["HTMLData"] = DAO.HTMLDataGet();
當我看到輸出時,它是轉義/HTML 編碼的。 我嘗試使用以下所有這些似乎都無法解決此問題:
<%: HttpUtility.HtmlDecode(ViewData["HTMLData"].ToString())%>
和...
<%: Server.HtmlDecode(ViewData["HTMLData"].ToString())%>
和...
<%: Html.Raw(ViewData["HTMLData"].ToString())%>
...它可以很好地從數據庫表中獲取原始 HTML,但是無論我嘗試什么,它都會繼續強制執行該爆破編碼。 從我在 MSDN 上閱讀的內容來看,有一個腳注是關於由於 HTML 未正確解碼而導致的問題,其中包含空格(我的就是這樣)。 因為我懷疑我是唯一一個面臨這個問題的人,所以我向你們尋求一些想法。
我打算用正則表達式來進行頁面清理,但我認為最好先從其他人那里得到一些建議,然后再強行使用它。提前致謝。
<%:
表示 “必要時編碼”。 如果你不想那樣,那么懶惰的方法就是使用<%=
,但坦率地說,我建議你把它包裝在IHtmlString
,例如:
string yourEncodedHtml = ...
var html = new MvcHtmlString(yourEncodedHtml);
現在,如果你存儲並顯示它,它應該采取的HTML“原樣”。
嘗試使用: <%=%>
<%= Html.Raw(ViewData["HTMLData"].ToString())%>
<%:%>是ASP.NET 4(和ASP.NET MVC)中HTML編碼輸出的語法
如何HTML編碼今天的內容
ASP.NET應用程序(尤其是那些使用ASP.NET MVC的應用程序)通常依賴於使用<%=%> code-nugget表達式來呈現輸出。 今天的開發人員經常在這些表達式中使用Server.HtmlEncode()或HttpUtility.Encode()輔助方法,在輸出呈現之前對輸出進行HTML編碼。
雖然這很好,但它有兩個缺點:
這是一個有點冗長的開發人員經常忘記調用Server.HtmlEncode方法 - 並沒有簡單的方法來驗證它在應用程序中的使用
新的<%:%>代碼塊語法
在ASP.NET 4中,我們引入了一種新的代碼表達式語法( <%:%> ),它可以像<%=%>塊一樣呈現輸出 - 但在執行此操作之前,它還會自動對HTML進行編碼。 這消除了對顯式HTML編碼內容的需要。
我們選擇<%:%>語法,以便快速替換<%=%>代碼塊的現有實例。 它還使您能夠輕松搜索代碼庫中的<%=%>元素,以查找並驗證您在應用程序中未使用HTML編碼的任何情況,以確保您具有正確的行為。
你幾乎用過你嘗試過的東西。 給了我這樣做的想法,這很有效:
Html.Raw(HttpUtility.HtmlDecode(ViewData["HTMLData"].ToString()))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.