2010-09-07 57 views
3

有沒有什麼辦法可以使用自定義的HTML幫助和<%:%>語法?MVC2自定義HTML幫助和<%: %>語法

我知道如果我使用下面的代碼,沒關係,但它看起來並不那麼優雅和安全。

<%= Html.MyHelper("Some Data")%> 

我的意思是,使用<%=%>是最佳做法嗎?

回答

3

有你的助手返回MvcHtmlString而不是字符串。另外,請儘量使用<%。

+0

完美!而已! – SoaresLuciano 2010-09-07 21:25:51

0

HTML幫助程序創建HTML,通常預期該HTML會以<%= %>的原始輸出格式輸出。如果您使用<%: %>來HTML轉義HTML助手的輸出,您會看到它在頁面上生成的HTML源文件(例如字面上<input name="foo" value="bar">屏幕上),這可能不是您想要的。

爲了安全起見,HTML中的任何文本內容都由HTML轉義而來。是的,如果您編寫自定義HTML幫助程序並將其寫入錯誤 - 忘記對字符串進行HTML編碼,則幫助程序將在輸出中放入文本內容或屬性值 - 您將遇到安全漏洞。你需要知道你在轉義寫HTML幫助器時做了什麼。

微軟,遺憾的是,似乎不這樣做,因爲在他們的tutorial第一個示例完全失敗:

return String.Format("<label for='{0}'>{1}</label>", target, text); 

哎呦。希望這些ID和文本字符串不是來自不可信的數據!

[爲什麼網絡教程總是那麼可悲的逃避問題,可怕嗎?]