asp.net
  • regex
  • user-controls
  • 2012-02-15 18 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

    相關問題