2016-09-07 25 views

回答

0

你可以在Razor的註釋標記,而不是HTML註釋標記之間寫的評論。那些在前端不可見。

除此之外,您正在打印任何文本(不包括Razor和PHP等服務器端腳本)的html文件。除非您通過工具在服務器上縮小它們,否則無法從靜態HTML中取出註釋。但既然你說他們是靜態的HTML頁面,我猜你根本沒有使用任何工具?

例如,您可以使用諸如http://www.willpeavy.com/minifier/之類的工具。

留下評論的安全風險應該不是那麼糟糕。首先,您不應該在HTML註釋中加入有價值的信息。他們現在主要用於顯示元素開始和/或結束時其他程序員接管的位置。

您的JavaScript在網站上也是可見的。假設你使用ajax調用和數據庫。這會造成比一些HTML評論更大的風險。很明顯,你只需確保你不會分享會導致客戶端評論中的安全問題的重要信息。

如果是服務於HTML自動化系統,你可以給它之前刪除的評論,你可以使用這樣的函數:

你可以使用HTML敏捷性包.NET庫。這是一篇文章 說明如何使用它SO:如何使用HTML敏捷包

這是C#代碼刪除評論:

HtmlDocument doc = new HtmlDocument(); 
doc.Load("yourFile.htm"); 

// get all comment nodes using XPATH 
foreach (HtmlNode comment in doc.DocumentNode.SelectNodes("//comment()")) 
{ 
    comment.ParentNode.RemoveChild(comment); 
} 
doc.Save(Console.Out); // displays doc w/o comments on console 

來源:Removing HTML Comments(你可以找到很多更多選項)

在將html保存爲靜態文件或編輯現有文件以過濾掉註釋之前觸發這樣的函數是一件簡單的事情。

+0

由於該文件是靜態的,我將放入的任何Razor標籤都會以文本形式呈現在頁面上。 此外,我正在尋找一種方法來自動執行此操作時,文件...不是手工。 但你確實有一點。如果我需要評論我的html,也許這意味着我需要簡化它;;) –

+0

我不知道你的意思是文件是靜態的。我以爲你的意思只是HTML。 在這種情況下,除非您先將文件放入某種過濾器中,否則不可能。你是通過手動還是通過自動化的C#過程來傳遞靜態文件?如果是通過自動化過程,則可以先放入一個函數來刪除註釋。 - 正如我在回答中所說的那樣;它不可能隱藏html評論。 – NoobishPro

+0

通過MVC控制器提供文件 –

2

如果您正在討論從HTML文件本身刪除評論,您當然可以在NotePad中打開它們並手動刪除評論。但我認爲您正在討論在頁面發送到瀏覽器時實時刪除它們。您希望評論保留在靜態文件中。

如果您在經典模式下運行IIS,您將無法使用ASP.NET代碼實時刪除註釋。但是,如果您運行的是integrated pipeline mode中的IIS,則可以掛接請求/響應管道和postprocess the HTML file,然後執行任何您想要的操作,例如在EndRequest事件處理程序中。

不確定解析頁面和查找HTML註釋以刪除它們的細節 - 可能會非常棘手 - 看起來像someone else問這個問題,並且有幾個答案可以在那裏找到。

相關問題