West Wind Technologies

Free .NET and Web Tools from Rick Strahl

This page summarizes a few of the most popular .NET and ASP.NET tools and components that I have published in the last few years or so. Some are free tools, but most were presented as part of an article or presentation and the link to those will point to the articles from which you can download the actual tools or components.


West Wind Web & AJAX Toolkit for ASP.NET
This toolkit provides many of the components published in my articles and blog entries in a single source library. Includes AJAX and jQuery components for easy Ajax and REST Callbacks, HoverPanels, Modal Popups, DragPanels and many interative UI features. Also includes several ASP.NET controls like a two-way DataBinder control, Tab Control, MessageDisplay and ErrorDisplay controls. Included also is the data-driven ASP.NET Resource Provider, that allows dynamic resource editing through a Web interface. Finally there are many system level and utility classes for day to day ASP.NET and .NET development.

Hosting the Razor Templating Engine in non-Web Applications

Article which includes full source code and describes a set of wrapper classes around the ASP.NET Razor templating engine so it can be hosted in any kind of application. Includes basic hosting for template parsing and sophisticated hosting scenarios that support template compilation and caching for better performance and reuse.

A Key Code Checker for DOM Keyboard Events

Small JavaScript utility that lets you easily see keycodes for input keys in the various HTML DOM events exposed on key presses. Shows key codes for each event as well as translated character values and shift states. Online utility.

West Wind Web Configuration Utility
Ever need to quickly install a Web application on a different server? You copy files and then you start fiddling with IIS to create a virtual directory, set directory permissions, possibly configure your Visual Studio.NET solution file to run in the different application path or configure MSDE/SQL Server to create a accounts? If you do this a lot this utility is for you. This utility performs these tasks through either an easy to use Windows Forms interface or through a command line interface that uses an XML configuration file that can 'just do it'. Free single file utility.

JavaScript Minifier Utility
This GUI and Command Line application strips white space and comments from JavaScript files reducing JavaScript file size significantly. The tool provides both a WinForms and command line interface that supports single file or directory batch conversion of JavaScript files. You can also run the ClickOnce Application online.

SnagIt Screen Capture Plugin for Windows Live Writer
This tool is a small plugin for Windows Live Writer that allows you to directly use the powerful SnagIt utility from Techsmith to capture screen shots directly into Blog entries in Windows Live Writer.

ASP.NET Controls and Components


jQuery Calendar ASP.NET Wrapper Control
This control provides a wrapper around Marc Garbanski's cool jQuery Calendar control providing simple dragging and dropping of the calandar and postback support of this popular calendar control.

wwDataBinder - a two-way data binding Extender
As much as ASP.NET 2.0 improves data binding, one aspect - simple control binding for controls like textboxes, checkboxes and selected values of lists for example - is still tedious especially when it comes to unbinding data. This powerful Extender control extends any ASP.NET control on a page and allows binding any property value to a data value or object property. The control supports declarative binding and unbinding, managing of binding errors and managing error display in a consistent fashion.

DbResourceProvider - A data driven Resource Provider and Editor for ASP.NET
Need to created localized ASP.NET applications, but struggling with the Resx resources? Take a look at this data driven resource provider implementation that lets you store localization resources in a database. The tool also includes a rich ASP.NET based resource administration interface that can be used to edit resource in a running ASP.NET application and see the changes immediately. An additional control can be used to provide context sensitive resource lookup to this administration form simply by dropping a small control on a form.

PreservePropertyControl - Easily persist values across page postbacks
What? Another state mechanism for ASP.NET? Yup - this one provides similar functionality to ViewState, but without requiring that ViewState is enabled. PreserveProperty() allows automatic storage and restoration of property values on a page. For example, say you have ViewState of on a DataGrid and you want to track the CurrentPageIndex: Persist.PreserveProperty(this.dgCustomers,"CurrentPageIndex"); and you're done. Same with things like ID values or even objects persisted on a form. You can simply change the values and forget about. The value will still be there on the postback. Comes with source code.
requires ASP.NET 2.0

wwWebTabControl - a simple TabStrip control
The wwWebTabControl is a simple, client side driven Tab control that uses ID tags to show and hide content on an ASP.NET page. Easy to use and flexible and comes with source code. A relatively simple demonstration of how to build a control with child collections that can be edited through the designer.

wwMessageDisplay - A generic Message Display class for ASP.Net
Creating messages in your Web application should be quick and easy and most importantly, consistent. They should look like they belong with the rest of the application even if - low and behold - an error occurs. How often have you created a new page to display some simple text or a notification message to your users? Wouldn't it be much nicer if you could reuse an existing template and simply passed in a few parameters to tell it to render an application specific message? This class provides a generic message implementation via ASP.NET's internal page redirection features that encapsuates the process of creating message pages reducing required application code to call it down to a single line of code.


Components with Source Code

wwAppConfiguration -  a better Configuration class for .NET
.NET provides rudimentary support for storing and retrieving configuration settings out of .config files. But there are a number of important features missing. Find out how to build a better mousetrap by creating a class that provides strong typing, read/write capability and encryption for values stored in your config files. Works with all types of .NET applications including ASP.NET, WinForms and Console apps.

wwRuntimeHost - ASP.NET Runtime Hosting class
Want to embed the power of ASP.Net into your application to provide rich and dynamic HTML displays in your applications? Add the ability to dynamically execute script code that is changeable after compilation? Don't want to give up debugging and the rich VS environment even in script code? Then take a look at hooking the ASP.Net runtime into your own applications. This article describes what it takes to integrate the ASP.Net runtime in desktop apps and provides an easy to use class that makes integration a matter of a few lines of code.

wwScripting - Dynamic Code Execution Class
Executing code that is created or read in at runtime is no trivial task in .NET. It takes a fair amount of code to accomplish this task, but it also offers a fair amount of power. This article discusses what's involved and provides an easy to use wwScripting wrapper class that provides for dynamic code execution.

wwHTTP - an easier HTTP Client class
.NET provides a powerful WebRequest class for accessing HTTP content over the Web. Unfortunately, although very powerful it leaves out some crucial functionality and hides common functionality fairly deeply in its hierarchy. The wwHTTP class provides a simpler property based model that wrappers many common tasks such as creating POST variables properly for various POST types, automatic cookie-handling and single method retrieval of HTTP content into strings, streams or Reader objects.

InputBox Class for WinForms
C# doesn't have an input box and VB.NET's version is somewhat limited. Here's an InputBox class that provides easy input of single values with support for typed values (string, numerics and dates) and type validation, format strings and a number of additional format options to make your input forms professional and not like some cheesy canned dialog. Supports both class and static method InputBox() interface. Source includes a sample form that demonstrates both.