我在运行时在我的aspx控件中设置了一个RegularExpressionValidator,如下所示
<asp:RegularExpressionValidator ID="revValue" runat="server" ControlToValidate="txtZipCode"
ValidationExpression='<%=this.SettingManager.GetSettingValue("ZipCodeValidationExpression")%>'
ErrorMessage="Invalid Zip Code." Display="Dynamic" />
在页面上,如果我输入无效的邮政编码,我会收到消息“无效的邮政编码”,但是,如果我输入有效的邮政编码,则没有任何反应,邮件仍为“邮政编码无效”。
如果我手动设置表达式如下
<asp:RegularExpressionValidator ID="revValue" runat="server" ControlToValidate="txtZipCode"
ValidationExpression="^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d)$"
ErrorMessage="Invalid Zip Code." Display="Dynamic" />
工作正常。我错过了什么?
答案 0 :(得分:3)
“代码隐藏”中的示例代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
public partial class Default3 : System.Web.UI.Page
{
public static string GetErrorMessage()
{
return "Your Error Message";
}
public static string GetValidationExpression()
{
return @"\d+";
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
qw.ErrorMessage = GetErrorMessage();
qw.ValidationExpression = GetValidationExpression();
}
}
}
ASPX页面中的示例代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="txt1" runat="server">
</asp:TextBox>
<asp:RegularExpressionValidator ID="qw" runat="server" ControlToValidate="txt1" Display="Dynamic"></asp:RegularExpressionValidator>
<asp:Button ID="ed" runat="server" Text="ed" />
</form>
</body>
</html>
答案 1 :(得分:2)
<%=
不是执行此操作的有效表达式。使用<%#
即可正确调用SettingManager.GetSettingValue
'。如果验证器在数据绑定控件内,则不必执行任何其他操作,否则需要调用DataBind方法
修改强>
一个小提示:检查生成的html并搜索validationexpression
。
validationexpression = "<%=this.SettingManager.GetSettingValue(\"ZipCodeValidationExpression\")%>"
这显然不是你需要的输出。