【发布时间】:2010-09-07 13:40:14
【问题描述】:
有没有办法使用 语法的自定义 html 助手?
我知道如果我使用下面的代码是可以的,但它似乎不是那么优雅和安全。
<%= Html.MyHelper("Some Data")%>
我的意思是,使用 是最佳实践吗?
【问题讨论】:
有没有办法使用 语法的自定义 html 助手?
我知道如果我使用下面的代码是可以的,但它似乎不是那么优雅和安全。
<%= Html.MyHelper("Some Data")%>
我的意思是,使用 是最佳实践吗?
【问题讨论】:
让您的助手返回 MvcHtmlString 而不是字符串。另外,请尽量使用
【讨论】:
HTML 助手创建 HTML,通常期望以 <%= %> 原始输出。如果您使用<%: %> 对HTML 助手的输出进行HTML 转义,您将在页面上看到它生成的HTML 源代码(例如屏幕上的字面意思<input name="foo" value="bar">),这可能不是您想要的。
为了安全起见,帮助程序对其中的任何文本内容进行 HTML 转义。是的,如果您编写了一个自定义 HTML 帮助程序并弄错了——忘记了对您的帮助程序在输出中输入文本内容或属性值的字符串进行 HTML 编码——您将遇到安全漏洞。你需要知道你在做什么转义来写一个 HTML 帮助器。
不幸的是,微软显然没有这样做,因为他们tutorial 中的第一个例子完全失败了:
return String.Format("<label for='{0}'>{1}</label>", target, text);
哎呀。希望那些 ID 和文本字符串不是来自不受信任的数据!
[为什么网络教程在逃避问题上总是那么糟糕?]
【讨论】: