asp.net
  • regex
  • user-controls
  • 2012-02-15 82 views 2 likes 
    2

    我在我的aspx控制设置的RegularExpressionValidator在运行时按如下设置的RegularExpressionValidator ValidationExpression在运行时

    <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" /> 
    

    它工作正常。我错过了什么?

    +1

    尝试从代码设定值来代替,这应该工作... – 2012-02-15 17:12:49

    +0

    你是什么意思?我没有这样做ValidationExpression ='<%= this.SettingManager.GetSettingValue(“ZipCodeValidationExpression”)%>' – 2012-02-15 17:19:54

    +1

    这是在标记中,我在代码后面说话...对不起,错过前面 – 2012-02-15 17:20:21

    回答

    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> 
    
    +0

    我使用OnPreRender而不是Page_Load ...所有工作。 – 2012-02-15 18:54:15

    1

    <%=不是这样做的有效表达式。使用<%#将正确呼叫SettingManager.GetSettingValue'。如果验证是一个数据绑定控件中你没有做别的事情,否则你需要调用DataBind方法

    编辑
    小提示:检查生成的HTML和搜索validationexpression

    validationexpression = "<%=this.SettingManager.GetSettingValue(\"ZipCodeValidationExpression\")%>" 
    

    这显然不是你需要的输出。在

    +1

    ''%='似乎并没有在'validationexpression'字符串中被评估。 – Matt 2016-07-15 14:30:48

    相关问题