我遇到以下文字显示问题:
<asp:RegularExpressionValidator ID="Password_RegularExpValidate" runat="server"
Text="TEST!"
Display="Dynamic"
BorderStyle="None"
ControlToValidate="txtNewPass"
ValidationExpression="(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*"
meta:resourcekey="Password_RegularExpValidateResource1" /></td>
模式本身就是:
(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
由于ValidationExpression不同,该文本最初有一些内容。我已经改变了正则表达式并且可以正常工作,但是当我在Text中写一些东西时它在页面上没有更新。我重新启动了IIS,清除了IE chache ......我能想到的一切。旧文本保持显示(即“TEST!”在验证失败时不显示)。
任何帮助都将不胜感激。
编辑:
txtnewpass的代码:
<asp:TextBox ID="txtNewPass" runat="server"
TextMode="Password"
MaxLength="256"
meta:resourcekey="txtNewPassResource1"></asp:TextBox>
此外,值得注意的是,我可以从重新加载页面时消失的页面中删除整个表格。但是当我从控件或任何runat =“server”更改文本值时,页面似乎没有用文本更新....
后面的代码不会编辑显示的字段,验证器会验证文本框中的文本并稍后使用该值。
编辑2:发生同样的事情 -
<asp:Label ID="Label1" runat="server"
Text="Change Password!!!!!"
meta:resourcekey="Label1Resource1"></asp:Label></td>
我添加了惊叹号(!!!!!),当我刷新页面时,它没有出现.....
编辑3:正如我在其中一条评论中所提到的,如果我从页面中删除一个表并重新加载页面,那么该表就会消失,所以我知道该页面正在正确地重新加载。 runat =“Server”属性,它是否以某种方式工作,它缓存文本或什么?我没有想法......
答案 0 :(得分:0)
答案 1 :(得分:0)
像Kirill所说,使用ErrorMessage代替Text。
但主要问题是,我认为,您的本地化是通过meta:resourcekey标记和资源处理的。 这是一个很好的解释: ASP.NET meta:resourcekey
如果您自动或手动设置资源本地化文件并在之后更改某些内容(例如Label Text属性),则还需要在资源文件中执行此操作。因为应该有你的初始值,它在运行时加载。
答案 2 :(得分:0)
问题的根源有很多可能性,并且没有足够的信息来判断它是哪一个。听起来像其中一个:
1)您的应用程序或页面的外部问题(可能您的ViewState未正确设置,或者在PostBack之前调用验证)。
2)正如Kirill建议的那样,你应该使用RegularExpressionValidator.ErrorMessage
代替Text
。你说你已经改变了,但是我想知道你是否重新加载了页面(你可以尝试重建应用程序或其他东西,如果它以某种方式缓存)。
(?=^.{8,255}$)
(
(?=.*\d)(?=.*[A-Z])(?=.*[a-z])
|
(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])
|
(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])
|
(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9])
)^.*
简化为:
^(
(?=.*[A-Z])(?=.*[\W_])(?=.*[a-z\d])
|
(?=.*[a-z])(?=.*\d)(?=.*([A-Z\W_]))
).{8,255}$
这是你的意图吗?我看到你要使用密码规则,但是简化它们可能更容易,并且需要一个大写,一个小写,一个数字和一个特殊字符。您还可以尝试使用更简单的正则表达式模式进行验证,然后在其他一切正常工作后添加复杂性。