我的页面中有一个RegularExpressionValidator控件&我的代码后面有一个全局公共正则表达式变量,它具有正确的ValidationExpression&选项&时间跨度。 贝娄是我的代码后面的代码:
public partial class Index : System.Web.UI.Page
{
public Regex regex;
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
if (!IsPostBack)
{
regex = new Regex("\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", RegexOptions.Singleline, TimeSpan.FromSeconds(5));
}
}
}
我想将它添加到我的页面控件中。它确定了它但是验证错误总是被显示并且它不起作用即使我输入正确的格式。我试过打字。第一个没有错误但是反应错误。第二个页面错误导致页面无法加载。
WebPage中的第一个类型代码如下:
<asp:RegularExpressionValidator ID="REV" runat="server" Text="Incorrect Format" ForeColor="Red" ControlToValidate="txt1" ValidationExpression="<%# regex %>" Display="Dynamic" />
WebPage中的第二个类型代码如下:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" Text="Incorrect Format" ForeColor="Red" ControlToValidate="txt1" ValidationExpression="<%# regex.Match(txt1.Text) %>" Display="Dynamic" />
我该如何解决这个问题。非常感谢你们:):
答案 0 :(得分:0)
幸运的是我想念一件事&amp;经过大约18个小时的思考,我突然发现了问题的解决方案。
问题是我们没有常规的全局变量,就像我们在win app base C#中那样(比如winform&amp; wpf&amp; ...),每当我调用regex时它都是null。但是如果我们想要全局的话我们必须有类变量所以我做了一个静态的calss给它一个静态变量regex(因为我不想被迫每次都强制创建它的新实例&amp; ...)和代码工作得很好。让我与大家分享我的代码。
下面是我必须去的真正方式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Index : System.Web.UI.Page
{
public static class RGX
{
public static Regex regex = new Regex("\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", RegexOptions.Singleline, TimeSpan.FromSeconds(5));
}
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
}
我在页面代码中使用了控件,如下所示
<asp:RegularExpressionValidator ID="REV" runat="server" Text="Wrong Format" ControlToValidate="txt1" Display="Dynamic" ValidationExpression="<%# RGX.regex %>"></asp:RegularExpressionValidator>
我希望有些身体帮助我,但没有人帮助过。最后我找到了解决方案,花了大约18个小时的时间。这让我付出了很大的代价。