This project is read-only.

Releases History

Release 3.0.0

  • Business Layer related features, such as validation attributes, have been moved to the new MVCControlsToolkit.Business dll, that is distributed in a different Nuget package.
  • Client templates may be cached thus avoiding the burden of recompiling them in each request. Moreover thay will not contain any script tag, but just knockout bindings.
  • Removed the dependency of some control features from jquery UI:
    • DateTimeInput,TypedTextBox, TypededitDisplay, now autodetect the css framework being used (jQuery UI, Bootstrap, or jQuery Mobile) and use the datepicker available in that framework
    • SortableListFor, and TreeView now keep their drag and drop capabilities also without jQuery UI.
    • Thanks to the addition of new callbacks the DetailForm may be connected to any Dialog control available in the Css framework
  • All javascript files have been reengineered: now all javascript features are accessible through the unique mvcct namespace. 
  • The PlaceJavascript global filter moves all server controls initialization javascript code at the end of the page being delivered together with all javascript snippets inserted by the developer. All javascript code is enclosed in a (function($){...})(jQuery) wrapper. This improves performance and discourage the definition of identifiers in global scope. Moreover, it improves partial views modularity, since now each partial view may require the javascript it needs via AMD calls placed at the end of the partial view, without causing browser performance issues, since all these snippets are automatically moved at the end of the whole page(for more details on this technique see
  • Nuget package has been connected with other available javascript Nuget packages (such as the globalize package)
  • Most of the examples have been reorganized and migrated to Mvc 5
  • Fixed a bug in the TreeView: exception being thrown when rendering empty folders.
  • Fixed a bug in MVCControlToolkit.JsQueryable.x.x..js: erron when defining nested queries.

Release 2.5.5

  • Added:
    • Mvc 5 compatible dlls
    • Custom MetaData caching
    • Now it is possible to define which components of the Time part of the DateTimeInput are visible.
    • a Framework to handle and minify Razor-based dynamic Javascript and Css files
    • "_Display" to the prefix of all names of display items of the Datagrid in order to prevent name collisions with the associated edit names. If names are generated with the PrefixedId and PrefixedName, no modification is needed to the old code.
    • default onError handler to the RetrievalManager Js class
    • possibility to specify an onAfterError handler in the RetrievalManager Js class
    • htmlStatusMessages function to both RetrievalManager and updatesManager Js classes in order to customize errors returned by the server, when the server return an error status.
  • Fixed:
    • Now TypedtextBoxes display validation errors only after the user has changed them
    • Bugs in the DateTumeInput
    • Some minor bugs in the client template engine

Release 2.4.0

We reviewed all controls to remove small bugs and to add usefull options. In particular:

  • All utilities of the mvcct.utils javascript namespace now work also without knockout.js
  • A Cache class has been added to the mvcct.utils javascript namespace.
  • More options have been added to the Retrieval Manager, that now is able to cache the results returned by the server and to serialize them in the local (or session) storage. All Retrieval Manager methods have been improved to remove small incongruences, and to add more capabilities.
  • The performance of the TreeView has been improved: the TreeView nodes are enhanced with all their cababilities only when their father node are opened. This way the TreeView loading time is decreased of some orders of magnitude.
  • A small bug in the accessibility of the TypedTextBox has been removed (before the tab key had problems in some browsers).
  • A security bug (possible Html Injection attack) has been removed from the _D helper.
  • Client side flow controls statements have been improved with more options.
  • A few more options have been added also to the updateManager class.
  • A bug has been removed from the DataGrid: before, the add row disappeared in some circumstances
  • More options have been added to the Menu helpers.
  • A few other secondary bugs have been removed

Release 2.3.0

  • Added
    • The new release is compatible with Mvc4 RTM.
    • Support for handling Time Zones in dates. Specifically added helper methods to convert to UTC or local time all DateTimes contained in a model received by a controller. This together with a detailed documentation on how TimeZones are handled in all situations by the Mvc framework, will contribute to mitigate the nightmare of dates and timezones. see this tutorial, and the documentation.
    • Multiple Templates, and more options to the Menu and MenuFor helpers. see here.
    • Now TreeView nodes children can be contained in any IEnumerable and not necessarily in a List
    • Added more options to the SortableListFor helper. see here
    • Now a ko (knockout.js) model is updted also when input fields it is bound to are changed by code if the "changedByCode" event is triggered. In turn each input field that.changes because of ko model changes triggers the "modelChanged " event
    • The GetTimer helper has been enriched with a couple parameters more. see here
  • Fixed
    • Now the Extended validator that adds globalization to the standard RangeAttribute substitute the default one after installation with no need of adding code in the global.asax
    • Corrected the bug in the conversion of the ISO date format from JSON to javascript in Safari browser
    • Corrected Some TimeZone related bugs in the json routines used by the toolkit

Release 2.2.0

  • Added
    • Modified all Mvc4 related features to conform with the Mvc4 RC. Attention: the Mvc4 version requires full thrust, due to an RC version check performed by the dll. This limit will be removed in the Mvc4 RTM version.
    • Now all items controls accept any IEnumerable<T>(before just List<T> were accepted by most of controls)
    • retrievalManager class that retrieves automatically data from a data source whenever it catchs events triggered by filtering, sorting, and paging controls
    • move method to the updatesManager to move one child objects from a father to another. The move operation can be undone like the insert, update and delete operations
    • Now an updatesManager can be decalred as child of itself, and in general circular references are allowed in the father-children graph. This way it is possible to handle any relation structure, and in particulare transitive relations like the recursive task-subtask relation.
  • Fixed
    • A bug in the updatesManager that appeared whenever the user inserts at least two children of a newly inserted father
    • A bug in the knockout server side error handling functions that prevented to show the original server side error string in an error label(* or other constants worked, but the original sever side string not)
    • TypedTextBox "flashed" in some mobile browser when a value was provided through javascript
    • Other minor bugs


Release 2.1.0

  • Added
    • The capability to handle one-to-many relations to the updateManager
    • ChildUpdater<T, U> utility class to help handling children entities on the server side.
    • Logical and only conditions check to SafeQuery and HttpSafeQuery
    • Error bubbling to the updateManager
    • Server errors automating delete,when changes are undone to the updateManager
    • prepareCallback to the updateManager options
    • options method to the updateManager to specify or change its options after the creation of its instances
    • OpenTContext and CloseTContext HtmlHelper extension. When inserted within a form they "compact" all hidden fields added by the Mvc Controls toolkit controls to give "hints" to the model binder, that are contained between the OpenTContext and CloseTContext calls
  • Fixed
    • Some minor bugs in the updateManager

Release 2.0.0

  • Added
    • Support for Mvc4 beta and WebApi
    • The SafeqQuery and HttpSafeQuery IQueryable implementations that works as wrappers around any IQueryable to protect it from unwished queries.
    • "Client Side" pager specialized in paging javascript data coming either from a remote data source, or from local data.
    • LinQ like fluent javascript api to build queries either against remote data sources, or against local javascript data, with exactly the same interface. There are 3 different query objects exposing the same interface: the first one executes the query through any upshot.js data source, the second one executes the query directly against any IQueryable exposed through the Web Api, and the last one executes the query against any local javascript data. All query objects can import query information from the Mvc Controls toolkit paging, sorting and filtering control
    • updateManager class to handle json updates with WebApi or standard controllers. It handles changes tracking and change set computation, updates of a generic ViewModel containing several change sets, server returned errors dispatching, and related collections (one to many or many to many).
    • Added multiple templates to the SortableFor and ClientSideRepeater
  • Fixed
    • A bug in the datepicker. Dates outside the allowed range were not disabled when using the jQuery picker
    • A bug in the validation of the DategridFor rows: the error state were not immediately cleared after an undo
    • Now Guids are correctly handled by all controls.

Release 1.8.0 more details

  • Added
    • Now a newly added row of the Datagrid disappears immediately without leaving a placeholder row when the user press the undo button, also when it is not the last row of the grid(Modification required by the users).
    • Now it is possible to register functions that initialize 3rd parties controls/widget. The inizialization functions will be automatically called by the toolkit whenever new content is created(items creations or ajax calls). In particular it is possible to register the function that initializes all jQuery Mobile Widgets, to make they work properly in newly created Grid, Treeview, Repeaters, etc. items.
    • Added the JsonModel and JsonModelFor helpers to transfer part of the ViewModel in an Hidden field in json format. If the json is modified then all modifications will be reflected on the server side model on post. json data received are also validated. These two helpers can be used together with all Client Blocks features to turn javascript controls/widgets into Mvc Server Side controls. We will post tutotials on how to implement Mvc Controls with this technique.
  • Fixed
    • A bug in the previous page button of the pager.

Release 1.7.0

  • Added more details
    • foreachwith, and if Html extension methods that can be nested to any level to define the page control flow on the client side, anagously to what Razor do on the server side. As in all previous releases both Client Side and Server Side validation are automatically provided in this enhanced Client Blocks, and all bindings are strongly typed and globalized.
    • helper for the new hasfocus knockout binding
    • Now both the SimpleMenuBuilder and the TreeBuilder classes allow conditional addition of menu items. If the condition provided with the Add satement is not verified the menu item and all its children are not added.
    • Now the developer can choose if an instance of the TypedEditDisplay move from/to the edit state to/from the display state automatically and/or manually with the help of javascript functions. Added also a an EditDisplayToggle button to toggle all TypedEditDisplay of a container between their Edit/Display states. The EditDisplayToggle is useful in implementing in-line edit grids.
    • Range and InputNumber Html5 helpers whose min/max are automatically extracted by the validation attributes. Other Htm5 inputs are easily achieved by simply supplying the right type attribute to a standard TextBox helper.
    • Improved the performance of the DateTimeInput: now just the selected item of each dropdown is rendered, all others are created by javascript on the client side. This way we may save a lot of bandwidth(when the controls is rendered several time in a grid) without renouncing to visibility to the search engines.


Release 1.6.0 more details

  • Added:
    • Now the two boxes of a DualSelect can be filtered by typing some charaters into two search textboxes.
    • Now the CanSortAttribute has the Allow and Deny properties to specify the filtering operation that can be performed on a column
    • Now the DataFilterBuilder allows the definition of complex query trees with the help of the Open and Close methods that respectively open and close brackets in the expression being built.
    • Now the FilterClauseSelect helper that renders a "select" to choose among all available data filtering operations has a new parameter that lists all operations to be shown in the "select"(before, all possible operations were listed)
    • Now the Client Side globalization library supports also the "G" date format (short date plus long time). The "G" format is the default .Net format for dates.
    • Now both the TypedTextBox showing a date, and the DateTimeInput allows the specification of the date format to be passed to the jQUery datepicker. The format can be passed either through the ClientFormat property of the FormatAttribute, or extracted automatically from theDataFormat property of the DisplayAttribute, or passed as a property of the CalendarOptions class. Both standard formats such as "d" or "G" and custom formats such as "yyyy/MM/dd" are supported.
    • The Target property to the SimpleMenuItem class to specify the window taget where to open the content of a menu selection.
    • The example CSS of the Menu has been added to the Nuget packages
  • Fixed:
    • A bug that prevented the application of a min constraints to the DateInput if no max were provided and vice versa.
    • Now the FilterClauseSelect can be used as an extension method(added the "this" before the HtmlHelper)
    • A bug in the max of the DynamicRangeAttribute
    • Fixed the example CSS of the Menu that now works on all main browsers

Release 1.5.5 more details

  • Added:
    • Now the DateRanteAttribute accepts complex expressions containing "Now" and "Today" as static minimum and maximum.
    • MenuMenuFor helpers capable of handling a "currently selected element". The developer can choose between using a standard nested menu based on a standard SimpleMenuItem class or specifying an item template based on a custom class. Added also helpers to build the tree structure containing all data items the menu takes infos from.
    • Improved the pager. Now the developer can add also a GoTo button with associated GoTo TextBox to jump to any page.
    • CrossHelper extension to use in a View an HtmlHelper<M> base on a model different from the one the View is strongly typed with. Useful, when one needs to post the View to a controller that uses a different ViewModel
  • Fixed:
    • Bug in the link pased pager: now the other Route parameters of the link works.
    • TextAlignement of some overloads of the TypedTextBox

Release 1.5.0 more details

  • Added:
    • The new Client Blocks feaure of Views
    • A new "move" js method for the TreeViews
    • The NewHtmlCreated js event to the DataGrid
    • Improved the ChoiceList structure that now allows also the selection list of a dropdown to be chosen with a lambda expression
    • Improved the AcceptViewHintAttribute controller filter. Now a client can specify not only the name of a View or Partial View it prefers, but also to receive just the rough data in Json format.
    • Now the the SMinimum and SMaximum parameters of the DateRangeAttribute accepts alos "Today" and "Now" as date.
  • Fixed:
    • Issue with partial thrust
    • Client handling of conditional attributes
    • Bug in TreeView node moves(introduced in the previous release) that sometimes were not reflected on the server
    • An issue in the Mvc3 Nuget package that wasn't able to uninstall properly 
    • A bug in the persistency option of the TreeView

Release 1.4.0 more details

  • Added
    • Now client side templates bindings are computed automatically
    • Now Client Templates and Client Side bindings are able to work also with the DualSelect. Moreover, bindings with select, multiselect and DualSelect works also with floats: they selects the options with the best match with the input floats
    • Dynamic DropDown has an optional callback
    • Provided complete Client-Side support for all Items Controls
    • Added the PrefixedName Html Helper
    • Now the MVCControlsToolkit.Controls.Validation namespace (globalization helpers) is automatically imported in all pages by the Nuget packages
  • Fixed
    • ResetRow of the DataGrid
    • Now validation always triggers at the right time

Release 1.3.0 SP1

  • Added
    • Now TypedTextBox and TypedEditDisplay accepts also DateTime and they have also the option to show a completely customizable jQuery calendar
    • Now TypedEdit Display can transform into a DropDown when in edit mode if an optional argument with all selectable items is passed.
    • Added a Dynamic DropDown whose items can be provided via JSON from an action method (useful to implement quickly cascading DropDowns)
    • Now the client side wrong number format error of the client validation system can be customized. Moreover we added the option to turn on also a client side validation of the globalized format of Date/Time (Mvc 3 only). Also for Date/Time the error message is customizable.
  • Fixed
    • When returning on a page with the browser back button a TypedTextBox showing its watermark go in an erroneus state, interpreting its watermark as an input
    • A bug in the constraints propagation of the DateTimePicker: a recursion check erroneously blocking back-propagation of constrains when reaching a fixed max or min.
    • The Validator of number format, that was erroneously removed has been substituted with an enhanced version.

Release 1.2.0 RTW

  • Added
    • Now all Items controls: DataGrid, SortableList and TreeView are able to work with a mix of subclasses of the classes declared in the ViewModel. For each Item the Model Binder creates the right subclass when the View is posted
    • Now it is possible to enable each property of the ViewModel to be bound to any subclassof its type by the model binder (the ViewModel property can be also an interface)
    • In the TreeView each item template can be strongly typed with a different class. Thus, on the client it is possible to create different node types
    • all server controls are able to work properly when rendered through Ajax
    • support for the Globalize globalization library that substituted the jquery-global
    • For security reasons now all nodes of a TreeView are required to implemet the Interface ISafeCreation
    • Improvements in the "undo" handler of the datagrid that nos is able to "undo" input of html5 input fields, and custom server controls, if the server controls implements adequate set/get functions
    • Improvements in the synchronization between the DetailForm and Datagrid that now are able to synchronize also complex datastructures such as lists contained in the rows
    • The MVCControlsToolkit.Controls js library is now available also in separate parts
    • New options to the ExternalContainer enumeration, that let the user choice the overall container to be used by some controls
    • All DateTimeFor overloads allow to specify an emptyDate
    • the RequiredFieldsAttribute has the options to verify also empty IEnumerable
    • The EnableSorting helpers allow a single sorting mode
  • Fixed
    • The detail form when used with IE9 throws an exception
    • The sortable list, when used with IE9, in some cases fails to apply the alternate rows styles
    • The DateInput fails to show in new items added to Sortable lists, datagrids, and treeviews, when calendar mode is selected
    • DataFilterClause doesn't work properly with Nullable<T> types
    • The AddItem of the sortable list is validated also when it is invisible
    • Server side Validation errors are nost shown properly when using the ClientValidationViewResult
    • Error in the client setting function of the DateTime input
    • Error in the MVC 2 validation Module of the datagrid rows that throws an exception if there are input fields with emprty id

Release 1.1.5 RC

  • Added
    • Extended Dropdown allows a prompt item to be inserted as first element. RequiredAttribute, if present, trggers if no element is chosen
    • Client side javascript function to set/get the values of DateTimeInput, TypedTextBox, TypedEditDisplay, and to bind/unbind a "change" handler
    • The selected page in the pager is applied the attribute selected-page="selected" that can be used in the definition of CSS rules to style the selected page
    • items controls now interpret a null value as an emprty list
  • Fixed
    • A bug in the TreeView that in some situation prevented the addition of new nodes
    • A bug in the DetailForm that caused a javascript exception in case of validation errors
    • A bug in the DualSelectBox that caused an exception in case no item is selected
    • A few minor bugs

Release 1.1 RC

  • Fixed all known bugs
  • Added:
    • Compatibility with jQuery 1.6.1
    • Rendering of enumerations with images and/or customizable strings
    • Improved the client side tempate engine
    • Added new parameters to the template definition binding
    • All new knockout bindings helpers have been fully implemented
    • Added a new overload for defining the client-side ViewModel
    • The SetTheme method has the option to store the theme in a permanent cookie
    • If no CSS class is provided for the watermark of a TypedTextBox the watermark class of the current theme is automatically used
    • The TypedEditDisplay helper has one more parameter

Release 1.0

  • Fixed the following bugs:
    • DateTimeInputFor now works also with DateTime?
    • Now when using the off-line calendar if user inserts manually an hill formatted date, the date reset to a valid date
    • Removed an error in the client validation of treeview, that prevented client side validation errors to be showed in some cases.
    • Removed the javascript exception thrown by the TreeView when the user tries to move a subtree that containing the current target for the drop
  • Added:
    • Client-Side template engine
    • Improved the Value binding of the client-side binding engine that now works not only with simple html elements, but also with server controls
    • Now items controls allow mulple insert also when they have been rendered through Ajax.
    • DataFilterClause helper
    • New DropDown helper that supports <optgroup> and individual styling of items
    • TypedEditDisplay helper
    • Timer Helpers

Release 0.9

  • Fixed the following bugs:
    • issue 661
    • issue 660
    • Someteimes the javascript code inserted in the DataGrid Items were executed twice(due to the use of jQuery maniplation functions).
    • minor bugs
  • Added:
    • Client-Side ViewModel synchronized with server and bindings engine
    • Add/Delete/Edit/Drag nodes TreeView
    • Support for Templates based on Razor Helpers and Lambda Expressions
    • Theming
    • In-line Transformations
    • Improved DateTimeInput that now display also through jQueryUI DatePicker
    • Some improvements of DataGrid and Insert/Update/Delete Mouse Dragging Sorting List
    • ViewsOnOff Helper
    • DataFilterBuilde helper to build Data Filters dynamically

Release 0.8

  • Fixed the following bugs:
    • Variable name error in the jvascript file that prevented the use of the deleted item template of the Datagrid
    • Now after the changes applied to an item of the DataGrid are cancelled all input fields are reset to the very initial value they had.
    • Other minor bugs.
  • Added
    • This version is available both for MVC2, and MVC 3. The MVC 3 version has a release number of 0.85. This way one can install both version.
    • Client Validation support has been added to all controls(both old style, and unobtrusive)
    • Mvc Controls Toolkit extends Mvc validation to include globalization
    • Now both DataGrid, and Reorder/Edit/Update/Delete list allow the addition of multiple items before the view is posted.
    • The new ViewList, DataFilter and TypedTextBox controls have been added
    • The new DynamicRangeAttribute and RequiredFieldsAttribute validation attribute has been defined
    • The MetaData provider has been extended to contain client side formatting information, and the pointer to the class a property is contained in.
    • Now the detail form has the option to be shown in a jQuery UI Dialog
    • Now there is also a pager that is capable of performing a get operation to a completely configurable route

Release 0.7

  • Fixed the following bugs:
    • Bug in the Model Binder that sometimes caused the Model state be assigned to wrong element of add/delete/list
  • Added
    • SortableListFor helper
    • Sorting capabilities to collections
    • CanSort attributes to constrain properties that can be sorted by the user
    • Undelete and Reset Buttons for datagrid
    • Added two optional templates to DataGrid
    • Ajax Enabled Master-Detail Helper
    • DisplayField helper to enable synchronization of fiields representing the same data and to enforce Data Annotations format
    • Now pager can display also generic strings instead of numbers 
    • AcceptViewHint action Filter
    • Some small useful utilities



Release 0.61

Mainly a bug fix releas.

  • Fixed The following bugs:
    • A bug in the prefix handling components caused some controls do not work properly when inserted in partial views
    • Pager Buttons don't appear disabled in some browser
    • When using <tr> as item container the layout of DataGrid manifest some problems in some browsers when passing from display to edit mode
    • Fixed a bug that sometines caused Datagrids and Insert/delete/update list to literally have a crazy begavior
  • Added:
    • Image, and Link buttons for the Dual select Box
    • GenericInput Html Helper
  • Improvements
    • Improved the general behavior of the DataGrid
    • Added an alternative Text or Image for disabled Pager buttons
    • Now all Controls HTML encode strings to show
    • Property accessors now are able to recover to partial prefixes when looking for peoperties

Release 0.6

  • Fixed the following bugs:
    • Sometime when a datarow is in edit mode the cancel button don't work
  • Added:
    • Image and Link buttons for datagrid
    • Pager with Normal, Link, Image buttons to page any enumerable
    • Normal, Link, Image ManipulationButtons
    • Mutual Exclusive CheckBoxes
    • NullableUpdater and ReferenceTypeUpdater
  • Examples Updated

Release 0.55 

  • Removed the following bugs:
    • Validation errors not shown in Partial Views called by RenderIn and RenderEnumerable
    • DateRangeAttribute when used with a RangeType of Propagate takes the MinimumDelay and MAximumdelay with the wrong sign
  • Added
    • Update/Insert/Delete DataGrid
    • Helper for HTML5 input of type Range
    • Examples showing some Controls working to the binary distribution

Release 0.5 

First release

Last edited Jun 22, 2014 at 12:59 PM by frankabbruzzese, version 39


No comments yet.