Home     About PeterBlum.com     Policies     Download a Licensed Product     Newsletter

Release History for Professional Validation And More - Suite v3.0.11


12/12/2007 Professional Validation And More v3.0.11 Update
  • The ToolkitScriptManager control from the AJAX Control Toolkit is supported.
  • An AJAX Callback sometimes should restore the state of validators to show their error messages. Other times it should not. You can now control this with the PeterBlum.VAM.AJAXManager.Current.RestoreValidatorState property. It defaults to true, restoring validator error messages after the callback.
  • Additional defenses for recent Script Injection attack scenarios. Be sure to replace the master.config file in the \VAM\VISE Config Files folder with the new one.
  • String Lookup System now can retrieve a Connection String from the <connectionstrings> section of the web.config file as an alternative to defining the string within the custom.vam.config file. Use the ConnectionStringName property in the <StringLookup&;gt; section of the custom.vam.config file.

Bug fixes
  • When using the PeterBlum.VAM.Globals.Page.ShowAlertOnSubmit and you have a validator that uses OverrideClientScriptEvaluation = Hide or HideOnSubmit, the alert shown after submit did not include that validators summary error message.
  • The ASP.NET 2 control HiddenField was not fully supported. Validators that evaluated it would ignore its value.
  • The CountTrueConditionsValidator did not assign the correct value to the {COUNT} token when doing server side validation.
  • When using the NoErrorFormatter and Enabler properties of the Validator, if the Enabler disables the validator, the NoErrorFormatter showed its image. It should be hidden.
  • When using the ToolTip property of the RequiredFieldMarker or RequiredFieldDescription control and you have an embedded image, the tooltip was replaced by the alternative text when the mouse is over the image in Internet Explorer. It should show the ToolTip property value.
  • When using Telerik Prometheus v2007.2.918.0, a callback could report an "Sys.WebForms.PageRequestManagerParserErrorException" error through a client-side messagebox. This only happens on the first page request since the application starts up.
  • When a FieldStateController (or similar control) is in the row of a grid and that row is deleted because of a DataBind on postback, a javascript error sometimes occurred on the client-side.
  • When using Microsoft ASP.NET AJAX with VAM, Safari would not handle callbacks properly. It acted like AJAX features were never setup.
  • CurrencyTextBox, DecimalTextBox, and validators whose DataType property is set to Double or Currency had client-side errors when the decimal number had 7 or more digits after the decimal point.
  • When a page includes server side only validators that show their error messages in the ValidationSummary, the ValidationSummary uses its ScrollIntoView property and the submit button uses the MayMoveOnClick property, a click on the submit button when the page is valid may not submit.
  • When using the Button's DisableOnSubmit property and that button is created within an AJAX Callback with its Enabled property set to false, it would be enabled when displayed.

6/17/2007 Professional Validation And More v3.0.10 Update
  • Support for RadControls "Prometheus" platform. If using RadAJAX, just call the PeterBlum.VAM.AJAXManager.UsingRadAJAX() method but pass in the ScriptManager instead of the RadAjaxManager.
  • Support for Infragistics AJAX-enabled controls. The PDP controls can be inside of a WebAsyncRequestPanel or UltraWebTab. Please see the User's Guide for the section "Using Infragistics AJAX-enabled Controls" to set up this feature.
Bugs fixed
  • Broken in 3.0.9: The Group property on individual validators failed to provide server side validation when it included the pipe character ("|").
  • If you explicitly called PeterBlum.VAM.Globals.Page.ValidateGroup(), it would not properly update the ValidationSummary of the same group name.
  • When using AJAX to manage DetailView control that contains VAM controls, a javascript error occurred if any VAM controls were outside of the AJAX call and located earlier on the page.
  • When using the CombinedErrorMessages control with a validator whose ErrorFormatterSkinID is setup, the skinID would allow the validator to show its error message instead of just letting the CombinedErrorMessages control do it.
  • When using AJAX, the disable on submit feature (Button.DisableOnSubmit) sometimes buttons disabled. This was a timing issue where the AJAX transaction was faster than 0.02 of a second.
  • When AJAX updates validators that are showing their errors on the page, those validators would hide their errors as they were reloaded. They now restore to their state prior to the callback.
  • In Visual Studio 2005 design mode, if a validator was within certain controls and you visually resized the control, you would get an error.
  • When using a CalculationController that has a ConditionCalcItem within an AJAX callback, a javascript error occured after the callback.
  • When using the validator's Blink feature, if validators are blinking and a callback occurs, a javascript error may occur (timing issue).

3/25/2007 Professional Validation And More v3.0.9 Update
  • Support for v1 of MS ASP.NET AJAX.
  • MultiSegmentDataEntry control now displays its Text and TextNoSeparators properties in the design mode tool for setting up databindings. (These properties now have the BindableAttribute.)
  • The SelectedIndexValidator and SelectedIndexCondition now correctly support matching the Index in a multiple selection listbox. Previously they only matched to the first selected listitem.
  • Support for subclasses of the MS ASP.NET AJAX controls: ScriptManager and UpdatePanel in the AJAXManager.UsingMicrosoftAJAX() and RegisterUpdatePanel() methods.
  • Support for Telerik RadMenu v4. See the Using rad controls Guide.pdf in [VAM Product folder]\Third Party Support\Telerik r.a.d. controls. If you update to Telerik RadMenu v4, you must modify VAM to use a different assembly and new setup instructions.
Bugs fixed
  • If an IgnoreConditionValidator or ValidationSummary.AddMessage() call added an error message to the ValidationSummary during an AJAX callback, that error message would remain in the ValidationSummary after later postbacks. It should be removed (have a life of one callback.)
  • CurrencyTextBox reported validation errors with the DataTypeCheckValidator when using cultures that have a non-breaking space character (ASCII 160) as the thousands separator. This includes fr-CA and sv-SE.
  • Introduced in 3.0.8: Some Properties Grids that offer a pick list of controls found on the page would have a blank list.
  • The MultiSegmentDataEntry.TabOnEnterKey property was not supported on DropDownListSegments. It is now.
  • Using the FSCOnCommand and MultiFSCOnCommand controls: When the FieldValue or InnerHTMLState properties are assigned to a textual value and that value matches the initial value of the ControlIDToChange, they were ignored. They should always apply their value.
  • On pages with validators, the form tag's onreset attribute would grow with each post back. The same script was getting merged over and over.
  • The Group property on validators did not work correctly in ASP.NET 2 when the validator was in a nested Naming container.
  • When the Group property was used on an IgnoreConditionValidator with the "+" token, it would throw an exception at runtime.
  • When a CombinedErrorMessages control uses the NoErrorFormatter with the Mode of Validated and there are several on the page, a validated field showed the NoErrorFormatter to the user on all of the CombinedErrorMessages controls.
  • When a validator contains a "runtime token" in its SummaryErrorMessage but not in its ErrorMessage, the ValidationSummary did not convert that token into its value. It stayed the token.
  • When using the Button's DisableOnSubmit property with an AJAX update, buttons that were disabled prior to submit are re-enabled after postback. They should have remained disabled.
  • When using the PeterBlum.VAM.Globals.Page.RegisterCallbackControl() method, the Group property was ignored. It always used the group "".
  • MultiFieldStateController and MultiFSCOnCommand ignored the Enabler property.
  • When using the Web Application Project feature of VS2005 to develop a web application, graphics and style sheets did not get applied in design mode.
  • In some cases, when a VAM control is searching for a control by its ID and that control is in an ancestor NamingContainer, it would not be found.

1/2/2007 Professional Validation And More v3.0.8 Update
  • Support for Microsoft ASP.NET AJAX Release Candidate 1.
  • VAM's TextBoxes now support the TextMode=Password when using the TabOnMaxLength property.
  • When using the AJAXManager.RegisterUpdatePanel() method with multiple UpdatePanels, the first UpdatePanel's UpdateMode must be set to Always or else other panels will not refresh their scripts, breaking them after a callback. The RegisterUpdatePanel() method has been enhanced to automatically set the first UpdatePanel to UpdateMode=Always.
  • When a VAM TextBox uses the ValueWhenBlank feature, previously validators needed to do extra setup to ignore the ValueWhenBlank in the textbox. Now its automatic. Your RequiredTextValidator no longer to specify the ValueWhenBlank in its UnassignedValues property and others do not need to establish an Enabler object. (If they continue to do so, it is harmless.)
  • Support for Infragistics WebGrid from their 2006 releases. There was a change to their code that broke my existing support. VAM has updated UWGClasses code files ([product folder]\third party support\Infragistics WebGrid). Replace the current file in your web app with the latest. It will continue to work with older versions of WebGrid. In addition the Connect() method now optionally allows nudging the position of the validator with pXOffset and pYOffset parameters. These are documented in "Using Infragistics WebGrid Guide.pdf".

Bug fixes
  • Better support for Internet Explorer 7. Prior to this release, some client-side features would work differently from IE 6.
  • AJAX/Callbacks: When using AJAX callbacks with a VAM Button or ImageButton, CausesValidation was always treated at true, even when it was false.
  • AJAX/Callbacks: When using the radAJAXPanel with the AJAXManager.UsingRadAJAX() method, callbacks did not work for FireFox and other Mozilla browsers.
  • AJAX/Callbacks: When a FieldStateController is used to change visibility inside of an MS AJAX UpdatePanel, it cannot make the element visible after a callback.
  • AJAX/Callbacks and ASP.NET 2.0 only: when using Server.Transfer to move away from a page that you were using the AJAXManager would result in a javascript error on the destination page.
  • AJAX/Callbacks: After an AJAX callback, any validator that has a SummaryErrorMessage did not show that error message in a ValidationSummary that appears later on the page. It either showed the ErrorMessage property or if that property was blank, it was not shown.
  • AJAX/Callbacks: When using a MultiConditionValidator or MultiCondition object with an AJAX callback on the page, the callback will result in a client-side Stack Overflow error.
  • AJAX/Callbacks: When using Atlas and the page has Peter's Date Package controls using VAM's validators, the javascript for any VAM controls involved in the callback would not be setup. (It appears to be a bug in Atlas but VAM has a hack to avoid it.)
  • Introduced in 3.0.6: When using PeterBlum.VAM.Globals.Page.RegisterKeyClicksControl() and there is no VAM textbox on the page, a javascript error occurred.
  • Introduced in 3.0.6: When using the radMenu or radTabStrip control (from radControls) with VAM, the client-side script never stopped an action due to an invalid validator.
  • Introduced in 3.0.6: When using any VAM TextBox with the CustomKeyDownFunctionName or CustomKeyPressFunctionName properties, the user would get a javascript error when typing into the textbox.
  • Introduced in 3.0.6: When the CalculationController or any type of FieldStateController is in a FormView control, design mode will show an "Object reference not set to an instance of an object."
  • The HyperlinkErrorFormatter needed to support the restoring animated GIFs after you clicked it. (Expansion of the feature added in 3.0.7.)
  • When using the ValidationSummary or PeterBlum.VAM.Globals.Page.ShowAlertOnSubmit features on a page with multiple validation groups, if a MultiConditionValidator is in one of those groups, it's error message could appear in the ValidationSummary or alert of the wrong group.
  • Found and fixed a memory leak connected to the "ValidatorAction" and "ErrorFormatter" class.
  • When these controls are added into an ASP.NET 2 CompositeControl class, any property that drops down to show a list of controls already on the page would throw a NullReferenceException.
  • When the page has javascript disabled (PeterBlum.VAM.Globals.Page.JavaScriptEnabled=false), several AJAX features still output their scripts.
  • ASP.NET 2 only: When the VAM LinkButton uses the WebForm_DoPostBack() function for its onclick event, it generated script errors when clicked.

10/31/2006 Professional Validation And More v3.0.7 Update
  • Support for the Microsoft AJAX Library Beta 1. This provides compatibility when using the UpdatePanel control. Follow the directions in the "Using these controls with AJAX" in each User's Guide.
  • VAM's LinkButton control now offers the MayMoveOnClick property that was introduced on the other Buttons in VAM 3.0.6. It has a limitation: it doesn't work on any Mozilla-based browser or any that do not offer a click() method on the <a> tag.
  • The CharacterValidator, CharacterCondition and FilteredTextBox offer several new properties that categorize related groups of characters. They are DiacriticLetters (including ASCII and UNICODE), Punctuation, MathSymbols, CurrencySymbols, EnclosureSymbols (like brackets), and VariousSymbols. They reduce the need to set up lists of characters in the OtherCharacters properties.
Bug fixes
  • After an AJAX update, any IntegerTextBox, DecimalTextBox and CurrencyTextBox that was included in the update lost its capability to reformat when the user made an edit.
  • When no validators are defined, a page that uses VAM's set focus to next control capability, found in VAM's TextBoxes and MultiSegmentDataEntry control, did not advance to the next control.

10/22/2006 Professional Validation And More 3.0.6 Update
  • All controls have been enhanced to work within various AJAX frameworks, including Microsoft Atlas, radAjax, and MagicAJAX. Configuration is required to get these controls to work, including calling a method on the new PeterBlum.VAM.AJAXManager object and setting the InAJAXUpdate property on each control. Detailed steps are provided in the "Using these controls with AJAX" section of each User's Guide.
  • Internet Explorer normally stops animated GIFs as soon as the form.submit() function runs. A clever hack found in this forum posting http://forums.asp.net/thread/1381507.aspx solves that and has been implemented in VAM. It will run when any code validates as the page is submitted. VAM Buttons that have CausesValidation=false will also run submission. For any other situation, write javascript code to call VAM_Reanimate(); in your onclick event that submits the page.
  • New property on VAM's Button and ImageButton: MayMoveOnClick. When true, it installs code that prevents having the user to click twice on the button to submit the page, if the button moved after the mouse down on the control.
  • The following properties on PeterBlum.VAM.Globals.Page have additional functionality: TextHiliteFieldsCssClass, NonTextHiliteFieldsCssClass, ControlErrorCssClass, ListErrorCssClass, and CheckErrorCssClass. Previously they always replaced the existing style on the associated control. That would defeat styles that contained width and height settings. Now you can use a "+" character before the class name and it will preserve the original class's styles. It effectively merges the two classes together.
  • BREAKING CHANGE. The EmailAddressValidator and condition now prevent any additional text after a valid email address unless you set the property AllowExtraText to true. Previously it always allowed extra text.
  • Visual Input Security now knows to ignore the hidden field "__EVENTVALIDATION" which is added in ASP.NET 2.0. "__EVENTVALIDATION" is another security measure within ASP.NET and has its own validation system.
Bugs fixed:
  • XHTML compliance fix for ASP.NET 2.0. ErrorFormatter.ImageAlign property did not generate XHTML compliant code.
  • The CountTrueConditionsValidator's server side evaluation would incorrectly count a condition that evaluated as "Cannot Evaluate". It should not have counted it.
  • The FSCOnCommand and MultiFSCOnCommand controls can cause a NullReferenceException on a postback that attempts to validate.
  • When using a RequiredListValidator or RequiredListCondition with a RadioButtonList and the UnassignedIndex property is used, it ignored the value of UnassignedIndex in client-side validation.
  • The ABARoutingNumberValidator should have reported an error when you enter '000000000'. It did not.

8/6/2006 Professional Validation And More v3.0.5 Update
  • Buttons that cause an AJAX callback, like the radcallback callbackButton, can validate first by using the PeterBlum.VAM.Globals.Page.RegisterCallbackControl.
Bugs fixed
  • When the VAM buttons are used in the Wizard control's navigation templates and they use the DisableOnSubmit property, a javascript error occurred when the page was submitted.
  • When using the {MINIMUM} or {MAXIMUM} tokens on a RangeValidator with DataType="Double", a value smaller than 0.00009 was represented as a string in scientific notation.
  • The ReadOnlyCondition did not provide server side evaluation correctly on any of these TextBoxes: FilteredTextBox, IntegerTextBox, DecimalTextBox, or CurrencyTextBox.
  • ASP.NET 2.0 only: The new ASP.NET 2.0 HiddenField webcontrol was not supported by validators that already supported the older style <input type='hidden' runat='server' /> control.
  • When in a Partial Trust environment and you GET the ErrorFormatter object from a Validator's ErrorFormatter property, it threw a SecurityException.
  • When using the Visual Studio 2005 built-in web server with Visual Input Security, the Security Analysis Report threw an InvalidOperationException, "Failed to map the path '/' ".
  • Server-side memory leak found in the ErrorFormatter object has been corrected.
  • Several client-side memory leaks found in Internet Explorer and have been fixed.
  • When using a MultiConditionValidator with an UnwantedWordsCondition in its Conditions property, the Properties Editor threw a Typecast exception.
  • When a FilteredTextBox has only these properties set to true: Enter and Exclude, it does not exclude the Enter key.
  • ASP.NET 2.0 only: When you call a page with VAM controls from a custom HttpHandler, it threw a NullReferenceException even if you called PeterBlum.VAM.Globals.UsingAltHttpHandler.

2/19/2006 Professional Validation And More v3.0.4
Notice of breaking change: VAM has always demanded that buttons and other controls that submit the page are correctly hooked up to VAM to get client-side validation. If you didn't follow this rule, your buttons may sometimes validate and sometimes not. The breaking change is that all controls that submit the page which are not attached to VAM will never run client-side validation. If you were lucky enough to get validation before without using a control attached to VAM, you will no longer get it. So be sure that your buttons are using the VAM submit controls or the techniques described in the section "Submitting the Page: Server-Side Validation" in the Validation User's Guide.

  • VAM has been tested with the new EasyListBox v3. Documentation on how to get EasyListBox to work best with VAM is found in the [VAM product folder]\Third Party Support\EasyListBox folder.
  • VAM now supports the Q4 2005 release of Telerik r.a.d. controls, starting at SP2 (RadGrid support starts at SP3). There were some assembly changes. So as you migrate to this version, please see the instructions for updated filenames and the <assemblyBinding> tag values. Documentation is found in [VAM product folder]\Third Party Support\Telerik r.a.d. controls folder.
  • Support for more versions of Infragistics UltraWebGrid is included. See [VAM product folder]\Third Party Support\Infragistics WebGrid folder.
  • Support for Infragistics WebCombo and WebDataInput controls is included. See [VAM product folder]\Third Party Support\Infragistics DataInput and Combo folder.
  • The ValidationSummary introduces the method AddMessage(). It permits adding messages to the ValidationSummary on the server side, usually in response to errors that are returned by your business layer. See the topic "Adding ErrorMessages At Runtime" in the "ValidationSummary Control" section of the Validation User's Guide.
  • The PeterBlum.VAM.Globals.Page.RegisterSubmitControl() method now supports the ASP.NET 2.0 LoginStatus control. Just pass the LoginStatus control into the first parameter and an empty string in the second parameter. Now the LoginStatus control will not cause client-side validation to occur.
  • The Validation User's Guide has a new section covering how VAM can be used with every webcontrol delivered in the ASP.NET framework, including all version 2.0 controls.
  • The PeterBlum.VAM.Globals.Page.AddHintToControl() method now supports RadioButtonList, CheckBoxList, and any other control that implements a "GetChildMethod" in custom.VAM.config.
  • In ASP.NET 2.0, controls that submit using __doPostBack will sometimes validate and sometimes not, depending on some prior validation action on the page. Now calls to __doPostBack will never validate. If you want validation, use either a VAM submit control or generate the __doPostBack() call using PeterBlum.VAM.Globals.Page.GetPostBackEventReference(thecontrol, "", "", false) as documented in the Validation User's Guide.

Bugs fixed
  • When the ValueWhenBlank property on any textbox contains a single quote, it caused a javascript error.
  • The DecimalTextBox reported a javascript error when the user typed a decimal number starting with a decimal separator like ".5".
  • When using spinners on numeric TextBoxes and you use a decimal value for the SpinnerIncrement, rounding errors can cause strange numbers to appear. This is due to the 80 bit math used by browsers in Javascript. The code now uses a rounding technique to clean up those math errors.
  • When using the DropDownListSegment of the MultiSegmentDataEntry control and the control is set to Visible=false, later when its set to Visible=true on a postback, the lists would be empty instead of containing the items you defined.
  • When using the DropDownListSegment of the MultiSegmentDataEntry control and using a validator on the control, the validator didn't fire if you last changed the dropdownlist before moving focus out of the field. (It still fired onsubmit.)
  • When using Hints on the MultiSegmentDataEntry control and you wanted to show validator error messages in the hint, any validator that is attached to the MSDE did not show its error message. (Validators assigned to individual segments did show.)
  • When using the TabIndex property on the MultiSegmentDataEntry control, Internet Explore tabbed first to the containing span tag before entering the first segment.
  • Alignment of segments in the MultiSegmentDataEntry control has been improved. The textboxes were slightly higher than the dropdownlists. (Note that static text between fields remains a little lower, but in line with text in the same line outside of the control.)
  • IgnoreConditionValidator would not show its error message in the ValidationSummary when the ValidationSummary was an earlier control in the page.
  • In ASP.NET 2.0 only: When using the validation group name that starts with the + token, client-side validation did not prevent submitting the page when there are invalid validators in some cases.
  • When using the OverrideClientSideEvaluation property on a validator along with the PeterBlum.VAM.Globals.Page.ControlErrorCssClass property, when an error was setup to show the error CssClass, it did not restore to the original class after an edit to the textbox.
  • When a LinkButton is used with a confirm message, either on Globals.Page.ConfirmMessage or on LinkButton.AltConfirmMessage, the confirm message appeared twice if the page was valid and the user selected "OK".
  • In the ASP.NET 2.0 GridView control, the paging links would prevent post back if there was an invalid control inside the grid that was already showing its error message.
  • In the ASP.NET 2.0 assembly only: When using the GridView control with VAM's CommandField, the Save/Update button did not always fire the RowUpdated event.
  • In the ASP.NET 2.0 assembly only: When you use the StyleSheetTheme property on the Page, its values would not be reflected in design mode of VAM's controls.
  • In the ASP.NET 2.0 assembly only: You are supposed to be able to turn off the default style sheet <link> tag by setting the VAM_StyleSheetFileUrl key in the web.config file to an empty string. It didn't work. The default style sheet URL was supplied instead.
  • In the ASP.NET 2.0 assembly only: When attempting to add the <link> tag to the style sheet file, if your <head> tag contains the symbols <% and %>, an HttpException was thrown. Now it will omit the link tag. If you use <@Page trace="true" >, the trace will inform you when this happens.
  • When you called the javascript function VAM_RunAllFSC(), it did not run any MultiFieldStateControllers or MultiFSCOnCommand controls.
  • The method PeterBlum.VAM.Globals.UsingAltHttpHandler() did nothing when Page.IsPostBack is true. It should work regardless of IsPostBack.
  • When VAM is used with Peter's Date Package, Opera 7 and 8 failed to popup the calendar and help menu reliably. Sometimes they would not popup at all.
  • In ASP.NET 2.0 only: When you setup the Form with the DefaultButton property, use the ENTER key to submit when there is a validation error. It will report the error. Fix the error and use ENTER again. That page will submit except it won't fire the correct post back event handler for the default button. This has been corrected.
  • In ASP.NET 2.0 only: When using IIS to map a virtual URL to a physical path, if your mapping does not end in a trailing \ character, design mode will report errors in locating your licenses and custom.vam.config file.
  • In ASP.NET 2.0 assembly only: Sometimes validators showed this message in design mode: "No file is found at VAM\VAM.config. This file is required to run VAM.". Notice the file path is exactly "VAM\VAM.config". Only this case was a bug that is now fixed. You should expect this error with other paths to indicate a setup problem.
  • When you have a VAM Suite Development.lic file deployed to production and its used, it should report an error describing a limit of IP addresses. Instead, it provided the wrong message, which was: "There are no valid [modulename] licenses files found in [filepath]".
  • VAM 3.0.2 and 3.0.3 only: In IE Mac 5.0 and 5.1, validation would fail when submitting the page.
  • In the PageSecurityValidator, if you set DetectInjectionSymbolsInQueryString=true but did not have any rules in CookieRules or QueryStringRules, the DetectInjectionSymbolsInQueryString feature was ignored.
  • When a MultiSegmentDataEntry control contained DropDownLists and was Visible=false, any value assigned to it would not be preserved in the viewstate at postback.

10/8/2005 Professional Validation And More 3.0.3
NOTICE: Visual Studio.Net 2005/ASP.NET 2.0 Users
The ASP.NET 2.0 assemblies included in this release are designed for ASP.NET 2.0 Release Candidate 1 and later. If you use an earlier build, you must either upgrade to RC1 or use the VAM assemblies built for ASP.NET 1.x.

Any attempt to use the VAM ASP.NET 2.0 assemblies with an earlier build will result in errors preventing you from using any validators and adding these controls into your toolbox.

  • The PeterBlum.VAM.Globals.Page.RegisterKeyClicksControl() method now supports mapping the function keys to buttons. Use values of 112-123 to represent these keys. Note that not all browsers support intercepting function keystrokes but IE, Mozilla, FireFox, and Netscape 7+ do.
  • The FieldStateController now offers the property SupportClientSideLookupByID which was previously only on validators. With it, you can setup javascript to invoke the FSC, modify its client-side properties and get the value returned from evaluating the condition.
  • Diner's Club changed their credit card numbers. The vam.config file contains the updated numbering system.
  • The CharacterValidator and CharacterCondition have a new property, Exclude. When true, the character set defined is excluded; all other characters are permitted. The NotCondition property has been depreciated on these classes because it doesn't set up the correct logic for exclusion.
  • Better alignment and positioning of MultiSegmentDataEntry's cells within that control, especially on Opera 7+ and Safari.
  • Continued improvements on displaying the spinners of numeric textboxes without absolute positioning, following up from the initial changes in v3.0.2. These controls now can avoid wrapping the spinners onto the next line on several browsers, using enclosing span or table tags.
  • MultiSegmentDataEntry control uses the white-space:nowrap style to prevent it from wrapping individual segments to the next line when squeezed for space.
  • v3.0.2 introduced an undocumented property called AutoAbsPositionMode on numeric textboxes. This has been depreciated. Use the new AutoContainer property instead.
  • In design mode, when a validator has ErrorFormatter.Display=None, it now applies the styles of the ErrorFormatter.
  • Import VAM Classes.exe and Convert Page to VAM.exe applications now detect read only files and prevent overwriting them. This helps when you keep files in a Source Control environment.

Bugs fixed
  • FilteredTextBox with no filtering properties setup allows all characters. That's fine. However, when you have a CharacterValidator attached, you got a javascript error as the validator evaluates, due to a bad regular expression.
  • When using any validator whose DataType is set to Date and the user enters 3 or more slashes, you would get a javascript error.
  • When using the CalculationController with a ConditionCalcItem assigned to a condition object of type MultiCondition or CountTrueConditions, a NullReferenceException may occur.
  • Some older browsers will report a javascript error when using any of the VAM TextBoxes. Includes Opera 6 and Netscape 4.
  • Some older browsers continued to generate javascript that sets up the auto detection of javascript, when the browser didn't support that code. The browser may report javascript errors.
  • The CharacterValidator/Condition automatically uses character set properties on the FilteredTextBox, when attached. If the CharacterValidator did not have at least one of its own character set properties enabled, you would get an exception.
  • In the ASP.NET 2.0 assemblies from v3.0.2, absolutely positioned validators would appear without their absolute positioning in design mode of VS.NET 2005. You couldn't even use the Layout; Position; Absolute menu command to work around this. There was no problem at runtime.
  • In the ASP.NET 2.0 assemblies from v3.0.2, when using the Development Server that is built into Visual Studio 2005, design mode would not show any of the default images so long as their URL starts with "~/".

9/6/2005 Professional Validation And More v3.0.2
  • Support for ASP.NET 2.0 features. Assemblies compiled with ASP.NET 2.0 Beta 2 are included and provide extensive enhancements related to the new features offered in ASP.NET 2.0. Each user's guide has a section detailing what has changed. The Installation Guide has steps to update from an ASP.NET 1.x site to 2.0. WARNING: This software is compiled with ASP.NET 2.0 Beta 2. It will be recompiled with the Release Candidate builds when they become available. A Beta 2 assembly may break when run on a site using the Release Candidate. A Release Candidate assembly may break when run on a site using Beta 2. So try to use versions of ASP.NET 2.0 that are the same release as these assemblies.
  • Client-side validation support for the Telerik r.a.d. controls suite including r.a.d. editor, r.a.d. grid, r.a.d. combobox, r.a.d. menu, and r.a.d. tabstrip. See the documentation in the Telerik r.a.d. controls folder to set up this support.
  • Several features that support images now let you assign the alternative text (the <img alt=''> attribute) so that when the browser fails to load the image, some text is displayed:
    • AlertImageErrorFormatter and TooltipImageErrorFormatter now have the ImageAltText property. It uses a global value from PeterBlum.VAM.Globals.Page.DefaultImageErrorFormatterImageAltText or the Global Settings Editor by default.
    • The images of RequiredFieldMarker and RequiredFieldDescription now use the global value from PeterBlum.VAM.Globals.Page.DefaultRequiredFieldImageAltText or the Global Settings Editor.
    • The NoErrorFormatter uses the global value from PeterBlum.VAM.Globals.Page.DefaultNoErrorFormatterImageAltText or the Global Settings Editor.
    • The spinners on numeric textboxes will show "+1" and "-1" or whatever value you define for incrementing.
  • The spinners on numeric textboxes no longer use absolute positioning, which was causing users to call VAM_MoveSpinners. It now uses a table that has style=display:inline;. It should now correctly position without you calling VAM_MoveSpinners. However, still use VAM_MoveSpinners if you show or hide the textbox to show and hide the spinners. SIDE EFFECT: absolute positioning always positioned the spinners to the right, even when there wasn't any screen space. inline positioning will wrap the spinners below if they don't fit on the screen. Right to left text will also position the spinners to the left now.
  • The CombinedErrorMessages control has a new property, ShowFirstMsgOnly. While the CombinedErrorMessages control is designed to show several validators error messages simultaneously, some developers believe its easier for their users to see just one error message at a time. When you set this property to true, only the first Validator that is invalid will show its error message. As that one is fixed, the CombinedErrorMessages control will show the next Validator that is invalid.
  • The CalculationController.DecimalPlaces property used to offer 1-4 decimal places. Now it offers 1-10 decimal places.
  • The CalculationController offers the ExtraControlsToRunThisAction property (like most of the other controls) so you can have other controls fire the calculation.
  • PeterBlum.VAM.TrueBrowser.Customize is a new delegate that is called when a new UserAgent is detected. It lets you customize the properties of the TrueBrowser object for that UserAgent. This way, you can introduce support for new browsers more easily.
  • The <ThirdPartyControls> section now can define a function that handles the appearance when there is an error. It is the <SetErrorStyleScript> tag.
  • The detection of javascript feature was only setup if you had at least one validator on the page. Now it is setup if you have at least one VAM control with client-side support, such as a VAM TextBox or FieldStateController.
  • A page with several CalculationControllers and FieldStateControllers could have poor performance as it initializes. The speed has been dramatically improved.
  • The web.config file key "VAM_ScriptVirtualPath" now allows the token "{VERSION}". It replaces the token with the same name of the folder containing the scripts as you find in the product installation. This way, you can have multiple versions of VAM scripts installed without updating the VAM_ScriptVirtualPath key.

Bugs fixed
  • When you have a module license (not the Suite license), you are allowed to use the CustomValidator. If you the only VAM control you use on a form is the CustomValidator, it gave a license error. So long as you had one valid license setup, the error should not have occurred.
  • Using a DataTypeCheckValidator for DataType=Date will not report an error when the year entered is 5 or more digits on the client-side but would report an error on the server side. It now reports an error with 5 or more digit years in both cases.
  • When the DuplicateEntryCondition is used under a MultiConditionValidator or CountTrueConditionValidator, a NullReferenceException occurred.
  • When DecimalTextBox uses a number in ValueWhenBlank and TrailZeroDecimalPlaces=0, the spinners did not work so long as the textbox matches ValueWhenBlank.
  • IE for Windows 5.0 would report a javascript error when attempting to show an alert with an error message. This is due to a bug in the browser's regular expression parser that does not accept an expression designed to find an HTML tag in the error message so those tags can be stripped out. This fix leaves the HTML tags in place when the alert is shown on the IE/Win 5.0 browser.
  • CalculationController generated a javascript error when using the ConstantCalcItem object with a CultureInfo whose NumericDecimalSeparator is not a period character.
  • CalculationController generated a runtime exception "The Owner property has not been assigned to a control which establishes a NamingContainer used to find other controls." when you added a CalcItem object programmatically in certain cases.
  • CalculationController did not add the ".0" to a decimal value displayed in a label when that value is a whole number. This was only a server side problem, based on using the AutoShowValue property. So a value of 2.0 would appear as "2" when it should appear as "2.0".
  • CalculationController using a ConditionCalcItem whose ExpressionFalse property is empty will cause a javascript error.
  • When using Interactive Hints to show validation errors in the hint, if a MultiConditionValidator supplied an error, there would be multiple copies of the same error message shown in the hint.
  • Intrasoft WebCombo 3.0 interfered with client-side validation when submitting. If there was a validation error, the page would still submit. A code change to VAM allows WebCombo's scripts to notice that VAM has requested the page not to be submitted.
  • If you set a LinkButton to Enabled=false, some of the client-side code still runs. Specifically, validation and disabling buttons for submit (DisableOnSubmit property). This is because IE does not actually stop the code from running on a disabled linkbutton. Mozilla doesn't even support the Enabled=false setting, leaving the linkbutton looking enabled and running the validation/disable code but not submitting the page. Defensive code has been added to avoid validating and disabling on submit when you click on a disabled LinkButton either on IE and Mozilla.
  • Using the VAM Button or LinkButton with DisableOnSubmit=true and CausesValidation=false, a click on the Button did not disable itself or any of the other disabled controls.
  • When using PeterBlum.VAM.Globals.Page.TextHiliteFieldsCssClass and the validator has EnabledClientScript=false, if the TextBox being validated has CssClass="", the fields that are affected by TextHiliteFieldsCssClass will get stuck in their "error" style after the error is fixed.

ASP.NET 2.0 Issues Resolved
  • When the Group property uses the special symbol "+", it did not work with client side validation. There was a format change of the value of any control's UniqueID property that broke a regular expression being used to evaluate the group property.
  • When using the CalculationController and you programmatically add a NumericTextBoxCalcItem to the Expressions property with its TextBoxID property assigned, it would throw a NullReferenceException.
  • Textboxes that have TabOnEnterKey=true did not tab on the enter key press when MaxLength is 0.

5/16/2005 Professional Validation And More v3.0.1 update
  • PeterBlum.VAM.Security.Globals.CleanupInputKeepingTags and CleanupInputKeepingTags2 will clean up another Script Injection attack pattern, replacing it with "!!".
  • When the Session is disabled (web.config <sessionState> mode is Off or <@Page enableSessionState=false >), an exception would occur indicating the Session is disabled.
  • When the sessionState is "StateServer", a TypeCastException sometimes occurred.
  • When any of VAM's textboxes are setup with to use the TabOnMaxLength, fast typing would drop keystrokes.
  • CurrencyTextBox permitted typing the parentheses characters when AllowNegatives property is false. It would not consider this valid. So the DataTypeCheckValidator would still stop the entry from being submitted.
  • During server side validation, the MultiSegmentDataEntryValidator did not report an error when IgnoreBlankText is false and the user left the field blank. It worked properly on client-side validation.
  • The MultiSegmentDataEntry control would generate a javascript error if all segments are DropDownListSegments.
  • When the MultiSegmentDataEntry control has a DropDownListSegment and a MultiSegmentDataEntryValidator, client-side validation failed with a javascript error.
  • When using the MSStyle validators, design mode reported an error message instead of drawing the actual validator. The message was "Object reference not set to an instance of the object".
  • When using the MSStyle CustomValidator and you had text between the start and end tags with a NEWLINE character, you would get a javascript error at runtime.
  • The Property Editor window for the ErrorFormatter property (on a validator) would generate an error message when you saved a template. It would save successfully. The Property Editor window for the Expression property on the RegexValidator would do the same when you saved an expression.
  • PeterBlum.VAM.Globals.Page.RegisterKeyClickControl() and the EnterSubmitControlID property did not work on Mozilla-based browsers. They generated a javascript error.
  • CalculationController generated a javascript error on Mozilla-based browsers instead of showing validator errors associated with the calculation.
ASP.NET 2.0 Issues Addressed
  • CombinedErrorMessages control would report an error about an incorrect ErrorFormatter property. VS.NET 2005 design mode added a property name "ErrorFormatter" to the control which previous versions did not, and therefore had no defensive coding to avoid the error. That defensive coding is now in place. Alternatively, you can delete the property named "ErrorFormatter" in the ASP.NET text tag for this control.