问题
我正在尝试在 MVC 中实现 HTML5/jQuery 模型,但遇到了我以前从未遇到过的问题;它似乎使用 Html.TextBoxFor、Html.PasswordFor 和其他都自动编码任何传递的 HTML 属性。
例子
以下面一行为例:
@Html.TextBoxFor(m => m.Pin, new { data_regexp="<\\d{4}>" })
此代码将用于验证信用卡上的 PIN 码,我需要使用 data-regexp 模式来传递适当的正则表达式。我希望输出如下:
<input data-regexp="<\d{4}>" id="Pin" type="text" />
相反,它似乎是从内置扩展中调用 HtmlAttributeEncode ( http://msdn.microsoft.com/en-us/library/wdek0zbf.aspx ),从而产生以下编码输出:
<input data-regexp="<\d{4}>" id="Pin" type="text" />
所需的解决方案说明
除了编写自己的扩展之外,我还有其他选择吗?使用其他形式的验证不是一种选择,这个例子只是为了展示手头的问题——我还有其他几个例子,我需要打印原始 HTML,而不是编码版本。
编辑:使用 Html.Raw 或 HttpUtility.Decode 没有影响。编码发生在应用这些中的任何一个之后。