情况
我目前正在将WebForms应用程序迁移到MVC。一些旧的控件大量使用WebForms表单验证框架(旧的验证器,例如RequiredFieldValidator
),目前我依赖于该特定行为。
完全重写这些控件实在太昂贵了。但我能做的就是将它们迁移到ASCX
- MVC-Views中。这允许我在Html.Partial
- cshtml
文件中通过<script type="text/javascript">
//<![CDATA[
var 1_ctl05 = document.all ? document.all["1_ctl05"] : document.getElementById("1_ctl05");
...
等使用旧的验证器和控件。
问题
当我这样做时,由于表单控件的错误客户端ID导致生成的验证代码中出现各种JS语法错误:
NamingContainer.ID
这里的问题是,变量可能不以数字(1)开头。数字1是命名容器通常会生成一些前缀的地方。
经过检查,我注意到ASCX控件的ID确实是&#34; 1&#34;,验证器及其父母的PageLoad
属性也是如此。
现在,我可以修复&#39;通过实施this.ID
- 事件,并将{{1}}设置为以字符开头的内容来解决此问题。但是我觉得我在这里做错了(我可以把ID设置得更合适吗?)或者这是一个错误。
有什么建议吗?
答案 0 :(得分:0)
虽然仍然不完全确定为什么命名容器是空的,但我注意到使用jQuery不引人注意的验证可以完全避免错误(和令人讨厌的)全局JavaScript代码。
所以&#34;修复&#34;在使用MVC和ASCX / ASPX表单时,它将使用不显眼的验证。