MVC2自定义HTML帮助程序和<%:%>句法

时间:2010-09-07 13:40:14

标签: asp.net-mvc-2 html-helper

有没有办法使用<%:%>的自定义html帮助器?语法?

我知道如果我使用下面的代码,那没关系,但它看起来并不那么优雅和安全。

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

我的意思是,使用&lt;%=%&gt;是最好的做法吗?

2 个答案:

答案 0 :(得分:3)

让你的助手返回MvcHtmlString而不是字符串。另外,请尽可能使用&lt;%:.

答案 1 :(得分:0)

HTML帮助程序创建HTML,通常希望使用<%= %>输出原始HTML。如果你使用<%: %>来HTML转义HTML助手的输出,你会看到它在页面上以文本形式生成的HTML源代码(例如屏幕上的字面<input name="foo" value="bar">),这可能不是你想要什么。

为了安全起见,HTML-escape帮助他们内部的任何文本内容。是的,如果你编写一个自定义的HTML帮助器并且弄错了 - 忘记了HTML编码字符串,你的帮助器在输出中放入文本内容或属性值 - 你将有安全漏洞。你需要知道你在逃避编写HTML助手时正在做些什么。

不幸的是,微软显然没有,因为他们tutorial中的第一个例子完全失败了:

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

糟糕。希望这些ID和文本字符串不是来自不受信任的数据!

[为什么网络教程在逃避问题时总是如此可怕?]