2010-09-07 59 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和文本字符串不是来自不可信的数据!

[为什么网络教程总是那么可悲的逃避问题,可怕吗?]