Установка выражения RegularExpressionValidator ValidationExpression во время выполнения - PullRequest
2 голосов
/ 15 февраля 2012

Я устанавливаю RegularExpressionValidator во время выполнения в моем элементе управления aspx, как показано ниже

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

Это работает нормально.Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

Пример кода в «Коде позади»

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>
2 голосов
/ 15 февраля 2012

<%= не является допустимым выражением для этого.Используйте <%#, который будет правильно вызывать SettingManager.GetSettingValue '.Если валидатор находится внутри элемента управления привязкой данных, вам больше ничего не нужно делать, в противном случае вам нужно вызвать метод DataBind.

редактировать Небольшой совет: проверьте сгенерированный HTML и найдите validationexpression.

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

Что, очевидно, не тот вывод, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...