Spring.net Validator 使用步骤

来源:互联网 发布:动画制作简单软件 编辑:程序博客网 时间:2024/06/10 02:04

 1. 配置验证文件:

     例如: <v:group id="tripValidator">

    <v:required id="departureAirportValidator" test="StartingFrom.AirportCode">
      <v:message id="error.departureAirport.required" providers="departureAirportErrors, validationSummary"/>
    </v:required>

    <v:group id="destinationAirportValidator">
      <v:required test="ReturningFrom.AirportCode">
        <v:message id="error.destinationAirport.required" providers="destinationAirportErrors, validationSummary"/>
      </v:required>
      <v:condition test="ReturningFrom.AirportCode != StartingFrom.AirportCode" when="ReturningFrom.AirportCode != ''">
        <v:message id="error.destinationAirport.sameAsDeparture" providers="destinationAirportErrors, validationSummary"/>
      </v:condition>
    </v:group>

    <v:group id="departureDateValidator">
      <v:required test="StartingFrom.Date">
        <v:message id="error.departureDate.required" providers="departureDateErrors, validationSummary"/>
      </v:required>
      <v:condition test="StartingFrom.Date >= DateTime.Today" when="StartingFrom.Date != DateTime.MinValue">
        <v:message id="error.departureDate.inThePast" providers="departureDateErrors, validationSummary"/>
      </v:condition>
    </v:group>

    <v:group id="returnDateValidator" when="Mode == 'RoundTrip'">
      <v:required test="ReturningFrom.Date">
        <v:message id="error.returnDate.required" providers="returnDateErrors, validationSummary"/>
      </v:required>
      <v:condition test="ReturningFrom.Date >= StartingFrom.Date" when="ReturningFrom.Date != DateTime.MinValue">
        <v:message id="error.returnDate.beforeDeparture" providers="returnDateErrors, validationSummary"/>
      </v:condition>
    </v:group>

  </v:group>

 

 

关于验证文件配置的解释:

 

id="tripValidator" 这个是验证组,唯一引用标示符。

test="StartingFrom.AirportCode"  是验证表达式,可以是标准的spring.net 表达式,也可以是方法调用等。

<v:message id="error.departureAirport.required" providers="departureAirportErrors, validationSummary"/>

这个中的id 是错误引用标示,其中错误信息在资源文件中定义;

providers="departureAirportErrors, validationSummary"

providers属性用一个以逗号分隔的字符串来指定一个“错误桶”,这个“桶”可以用来保存特定的错误信息,并且用特定的显示机制在必要的时候将错误信息显示出来。

 

when="Mode == 'RoundTrip'"

 

这个是,当when指定的条件成立时才验证;

 

2. 将验证对象注入到需要验证的页面中,或者是制定的要验证的对象,

例如:

 

<object type="TripForm.aspx" parent="standardPage">
     <property name="TripValidator" ref="tripValidator" />
  </object>

 

3. 准备资源文件。

 

4. 在Ioc容器中引用相应的文件,做配置

如:<object id="cultureResolver" type="Spring.Globalization.Resolvers.SessionCultureResolver, Spring.Web" />
 
  <object id="localizer" type="Spring.Globalization.Localizers.ResourceSetLocalizer, Spring.Core" />
 
  <object id="messageSource" type="Spring.Context.Support.ResourceSetMessageSource, Spring.Core">
    <property name="ResourceManagers">
      <list>
        <value>Resources.Strings, App_GlobalResources</value>
      </list>
    </property>
    <property name="UseCodeAsDefaultMessage" value="true" />
  </object>

  <!-- Validation errors renderer configuration -->
  <object id="Spring.Web.UI.Controls.ValidationError" abstract="true">
    <property name="Renderer">
      <object type="Spring.Web.UI.Validation.IconValidationErrorsRenderer, Spring.Web">
        <property name="IconSrc" value="validation-error.gif"/>
      </object>
    </property>
  </object>

  <object id="Spring.Web.UI.Controls.ValidationSummary" abstract="true">
    <property name="Renderer">
      <object type="Spring.Web.UI.Validation.DivValidationErrorsRenderer, Spring.Web">
        <property name="CssClass" value="validationError"/>
      </object>
    </property>
  </object>

  <!-- Base page definition. All other pages inherit these settings -->
  <object id="standardPage" abstract="true">
    <property name="MasterPageFile" value="~/Web/StandardTemplate.master"/>
    <property name="CultureResolver" ref="cultureResolver"/>
    <property name="Localizer" ref="localizer"/>
    <property name="ScriptsRoot" value="~/Scripts" />
    <property name="CssRoot" value="~/Web/CSS"/>
    <property name="ImagesRoot" value="~/Web/Images"/>
  </object>

 

 

 

5.在相信的后置代码文件中实现这样的事件形式
protected void SearchForFlights(object sender, EventArgs e)
    {
        if (Validate(trip, tripValidator))
        {
            FlightSuggestions suggestions = this.bookingAgent.SuggestFlights(Trip);
            if (suggestions.HasOutboundFlights)
            {
                Session[Constants.SuggestedFlightsKey] = suggestions;
                SetResult(DisplaySuggestedFlights);
            }
        }
    }

 

6.定义相应的对象

 

private IValidator tripValidator;

 

public IValidator TripValidator
    {
        set { tripValidator = value; }
    }

 

引用相应的命名空间

using ValidationSummary = Spring.Web.UI.Controls.ValidationSummary;

 

8.页面后置文件必须实现这个命名空间Spring.Web.UI.Page

 

9.在aspx页面中这样实现就ok了<spring:ValidationError id="departureAirportErrors" runat="server" />

 

 

 

 

 

 

原创粉丝点击