Friday, December 16, 2011
Search and Core Library Enhancements

Code On Time has released update that includes several enhancements and bug fixes described below.

  • Search in Quick Find or Automatic Search Bar will clear the selected record and hide any related details link to previously selected master. Applying a filter will also reset the selected record.
  • Date and numeric “fuzzy” values are now accepted in automatic search bar and filter filters. For example, users can now enter "Thu" in the search field of DateTime type or enter a date as 12162011 (for 12/16/2011).
  • Virtual method HandleException can be implemented to perform global exception processing for all exceptions raised when actions are executed.
  • Data access objects and BLOB processing code of the application framework now uses class ControllerUtilities to determine the "standard" views that must be used to execute SELECT / UPDATE / INSERT / DELETE operations.
    All operations with the exception of INSERT are using "editForm1". INSERT is using "createForm1". The utility class allows overriding the decision making process, which allows a non-generic view name to be returned for certain data controller when executing specific actions.
  • Calls to UpdateFieldValue in the business rule method execute in response to Command Name = "Custom" and Command Argument = "abc.." will refresh updated fields.
    This can be used as an alternative to "Calculated" fields to update values in the record in response to user-initiated action.
  • BLOB processing will allow caching if IE 6,7,8 is downloading the binary object over SSL. Otherwise it is impossible to see the downloaded file on the client.
  • Time dropdown is displayed for fields with Data Format String of "{0:g} or "{0:G}". The dropdown now correctly handles am/pm values.
  • User-defined filter "'Field' Does Not Equal 'Empty'" will now work correctly.
  • Prevents an exception raised when an empty area of Project Explorer is clicked and selected node is not available.
  • Fixed the bug with processing of "_display" argument that can specified in the URL along with data controller URL parameters.
  • Preview and Generate actions executed from within Project Designer will not raise and exception if IIS Express is not installed on the computer. The code generator will try to use the local web development server that comes standard with Visual Studio.
  • Code generator validates presence of resources referenced in the "*.*proj" files of generated projects. If the resource (file) does not exist then the reference is excluded.
    The major side effect is the ability to change the theme in the projects other than Web Site Factory without breaking the generated web app. Developers can try all available themes in all types of projects without issues.
  • Various cosmetic changes to the code generator UI.

Examples of ControllerUtilities class and sample implementation of HandleException are presented below.

The first class instructs the application framework to use myCreateForm when application data access objects are trying to insert records through MyController data controller.

The second class shows how to display a custom message instead of a generic error reported by SQL Server when DELETE statement fails due to foreign key constraints.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyCompany.Data

    public partial class ControllerUtilities
        public override string GetActionView(string controller, string view, string action)
            if (controller == "MyController" && action == "Insert")
                return "myCreateForm";
            return base.GetActionView(controller, view, action);

namespace MyCompany.Data

    public partial class Controller
        protected override void HandleException(Exception ex, ActionArgs args, ActionResult result)
            if (ex.Message.Contains("DELETE"))
                result.Errors.Add("Can't delete a record");
                base.HandleException(ex, args, result);