Really Simple Testing for JavaScript
There are plenty of options to test JavaScript code. My goal here is not especially to add to this long list but I needed something for my samples that was brain dead simple to understand and that I could redistribute without any concerns about licensing (this is licensed under the very liberal MS-......
Instantiating components on template markup
All client-side template engines enable you to create HTML (feel free to go ‘duh’). What they don’t all allow is the creation of event handlers and components over the markup they generate. The general approach with those engines is to do a second pass of code over the markup to create handlers and......
Should HTML be considered as a data format?
As HTML is becoming more and more semantic, at least in intent, and all styling is moving into CSS, one has to wonder what it is now representing. It seems like it is now a format for unstructured data (a.k.a. rich text), in the same sense that XML and JSON are formats for semi-structured and struc......
Simplifying the edit in place behavior
Last week, I wrote about building a simple behavior to edit text in place. Almost at the same time, Nikhil was building a similar component for Silverlight, but it was considerably simpler because instead of substituting a label for the textbox on blur, he was just changing the border so that the t......
Putting more than one behavior on one element
Microsoft Ajax has the interesting ability to combine more than one component onto a single element. In the previous talk, I alluded to this possibility and one of the commenters (Tiamat) asked me to show how this is done. Here is an example that combines the new EditInPlace behavior I showed yest......
Building a neat edit in place behavior
For the purposes of my next post, I built a neat little edit in place behavior and I thought it deserved its own post. It does a pretty good job at showing how easy it is to build a clean behavior using ASP.NET Ajax. It’s always good to go back to the basics… In this post, I’ll show you how the beh......
Deep Zoom without Silverlight
In a move that I wouldn’t have bet a dollar on, Live Labs released a purely JavaScript Deep Zoom client. You read that right, what was so far one of the nice features only found in Silverlight is now available in an open web, standards-based version.
Seadragon.embed("451px", "338px", "http:/......
One thing you didn’t know about ASP.NET unless you’re David Ebbo
David has an excellent post about a pretty cool ASP.NET feature that you almost certainly don’t know about. I had no idea for sure. Check it out.
http://blogs.msdn.com/davidebb/archive/2008/11/19/a-hidden-gem-for-control-builder-writers.aspx
UPDATE: and there he goes again...http://blogs.msdn.com......
The magic behind live bindings explained
Dave has a fantastic and very detailed post about our implementation of the Observer pattern in ASP.NET Ajax 4.0. This feature is what enables the live bindings to work. Check it out! http://weblogs.asp.net/infinitiesloop/archive/2008/11/09/asp-net-ajax-4-0-observing-updates-to-pojos-plain-ole-......
Visual Studio patched for better jQuery IntelliSense
Jeff King just announced the release of a patch for Visual Studio 2008 that enables the IDE to find the –vsdoc.js file without requiring the developer to reference it. To give some context, a documentation file (basically the same file as the runtime script but with XML documentation annotations) ......
Building a data driven application with ASP.NET Ajax 4.0 and ADO.NET Data Services
Jim Wang (one of the great QA people on the Ajax team) just started a blog, and his first post is a very detailed walk through building a data-driven application from scratch using ADO.NET Data Services and the new client templates in ASP.NET Ajax 4.0. http://weblogs.asp.net/jimwang/archive/2008/1......
PDC 2008 ASP.NET AJAX Futures talk available online
The full 83 minutes of my PDC talk are available on the Channel 9 web site. You can watch the session online (using Silverlight) or download the video in a number of formats. Slides and source code for the demo are also available.
Watch online: http://channel9.msdn.com/pdc2008/PC32/
Download MP......
ASP.NET 4.0 Roadmap talk available online
Scott Hunter’s talk on the ASP.NET 4.0 roadmap (in which I’m doing a 10 minute demo) is available from Channel9: http://channel9.msdn.com/pdc2008/PC20/...
Going to California
I’m flying to San Jose tonight for tomorrow’s OpenAjax Alliance face to face meeting, which Microsoft is hosting. On Friday, we are also hosting a new event that aims at establishing a dialogue between JavaScript library developers and Microsoft. We’ll have talks from the IE, Visual Studio and ASP.......
Using the power of binding to animate changes
In a recent post, I showed how the binding component can be instantiated independently of the {binding} markup extension. But there’s a whole lot more it can do. For instance, it has two very interesting callback properties, convert and convertBack that get called any time the binding sees a chang......
Hack: using live bindings outside templates
A comment on this post is asking whether it is possible to create bindings outside of a template. The point of doing that is that you don’t necessarily want to render a template just to set-up a few bindings.
Well, bindings are really implemented by a component, Sys.Binding, and a markup extension......
Alt.NET podcast on jQuery
We had an interesting conversation with the good people from the Alt.NET podcast on jQuery and what it means for .NET developers. Check it out: http://altnetpodcast.com/episodes/11-jquery-in-asp.net...
A possible cause of “‘Sys’ is undefined” explained
Clay Compton explains on the ASP.NET QA blog how bad web.config overrides can lead to the Microsoft Ajax Library not loading and the “‘Sys’ is undefined” error being thrown when the page loads. It’s a great read and hopefully will unblock some of you. http://weblogs.asp.net/asptest/archive/2008/10......
Client templates in MSDN Magazine
My first full-length article in MSDN Magazine is out with the October issue and it’s about Microsoft AJAX client templates. Check it out… http://msdn.microsoft.com/en-us/magazine/cc972638.aspx...
jQuery now officially part of the .NET developer’s toolbox
You may have read that from John Resig or Scott Guthrie. I’m very excited to announce that Microsoft has decided to ship, adopt and support using jQuery on top of ASP.NET. This may come as a surprise to some of you but I hope you’ll agree with me that it makes total sense. jQuery is a fantastic Jav......
JavaScript and client templates on Hanselminutes
I'm sharing a spot with Scott Cate (of CloudDB fame, and by the way CloudDB is a fantastic product built entirely using ASP.NET AJAX) this week on Hanselminutes. I had lots of fun discussing with Scott (Hanselman) on various topics ranging from JavaScript to the Microsoft Ajax Library and our new ......
Using client templates, part 2: Live Bindings
In part 1, we saw how to use DataView to render JavaScript data using a simple template. In this post, we'll see how rich bindings unlock richer scenarios where user changes automatically propagate back to the data and to all UI that is bound to it. In part 1, we used the simplest type of binding,......
Using the Ajax Control Toolkit in ASP.NET MVC
Stephen Walther has a pretty cool post on using the new file-only version of the Ajax Control Toolkit from an MVC application:
http://weblogs.asp.net/stephenwalther/archive/2008/08/22/asp-net-mvc-tip-36-create-a-popup-calendar-helper.aspx
UPDATE: the problem with Stephen is that he writes quite f......
Ajax Control Toolkit released for .NET 3.5 SP1
I just released the latest version of the Ajax Control Toolkit for .NET 3.5 SP1.
This is an intermediary release that provides a version of the Toolkit that is built against the .NET Framework 3.5 SP1. It contains a new control, MultiHandleSlider, built by Daniel Crenna (thanks, Daniel, you're the......
Need a simple grid for ASP.NET Ajax?
A client grid control is probably the most requested control for the Ajax Control Toolkit. It will come eventually but if you need a simple grid control right now, DotNetSlackers' Ajax Data Controls do a pretty good job. Their grid supports pagination, sorting, drag and drop of columns, in-place ed......
Using client templates, part 1
Last week, we shipped the first preview for the Ajax work we're doing in ASP.NET 4.0 under the simple form of a simple script file (release and debug versions). This should show how much emphasis this release puts on the client-side. As a matter of facts, I'll use a plain HTML file here instead of ......
Alternating styles in ListView without AlternatingItemTemplate
ListView (the server-side control), like all repeating data controls in ASP.NET, has an AlternatingItemTemplate, but it would be a shame to have to copy all the markup in the ItemTemplate into AlternatingItemTemplate, just to alternate styles on the items. It's quite likely that only css classes wi......
ASP.NET AJAX 4.0 CodePlex Preview 1 available
I'm very happy to announce that the first preview for the new Ajax features in ASP.NET just went live. Thanks to everyone who made that happen and thanks to all of you for providing feedback on the Roadmap. This preview contains preview implementations for the following features: Client-side t......
Using ScriptManager with other frameworks
ScriptManager is a useful control. It manages script references, removes duplicates, enables localization and debug/release modes, enables script combining and makes client-side component-based development easier (components register their script dependencies with ScriptManager without the page dev......
ASP.NET Ajax roadmap published
We just published our roadmap for ASP.NET Ajax. In this document we describe some of the proposed features that we are considering investing in future releases of ASP.NET AJAX, Visual Web Developer, and the ASP.NET AJAX Control Toolkit. We really appreciate your feedback, so this document is in......
Script reference profiler
ASP.NET Ajax 3.5 SP1 contains a new feature that enables the application developer to combine scripts in order to reduce the number of downloaded files. But in order to do that, the developer must have a way of discovering what scripts are being used in a page or application.
To make that easier, ......
A case for partial rendering
I've been seeing more and more authors lately dismissing partial rendering (a.k.a. UpdatePanel) as a poor man's version of Ajax, something you should only choose if you're too lazy to implement "true" Ajax. I think that view not only has a slightly pedantic ring (isn't laziness one of th......
If you're reading this, you should be on weblogs.asp.net/bleroy
Apologies if you're not. Let me explain. I'm publishing this post on my blog, which quite a few external sites chose to aggregate. I thank them for that, but I should still have the freedom to talk about any subject I want on my own blog no matter what the editorial line of those other sites is. Th......
Getting absolute coordinates from a DOM element
For some reason, there is no standard API to get the pixel coordinates of a DOM element relative to the upper-left corner of the document. APIs only exist to get coordinates relative to the offset parent. Problem is, it's very important to get those coordinates for applications such as drag and dro......
Improving PHP by running it in IIS
Mike Volodarsky wrote a fantastic article in the January 2008 issue of MSDN magazine in which he explains how you can take an existing PHP application (he uses QDig, a popular image gallery) and improve it without touching a line of its code. This is a great demonstration of the power of IIS 7's mo......
Dates and JSON
JSON is a great data format and it's taken the Internet by storm for a number of good reasons. But because of a strange oversight in the EcmaScript specs, there is no standard way of describing dates in JSON. There's been a lot of discussion on this topic and it still remains a problem today.
In t......
Screencast: how to enable server-side history management in an ASP.NET Ajax application
I've recently recorded a screencast showing how to enable server-side history management (in other words, handling the back button) in an ASP.NET Ajax application. The whole video is less than 15 minutes total and I build the whole application from scratch in there (in VB). I hope it shows just how......
Ajax usage survey among .NET developers
Following the more open-sourcey informal study that was recently advertised on Ajaxian, Simone Chiaretta publishes and analyses the results of his own study that he recently made and that is aimed exclusively at .NET developers. While Richard Monson-Haefel's study is being made for the third consec......
Does JavaScript need method overloading?
John Resig of Mozilla and jQuery fame has a very interesting post about method overloading in JavsScript. In a nutshell, he proposes a utility function that gives a relatively simple way of overloading a method. The different versions are distinguished by the number of arguments (not their types). ......
Is Safari on Windows a good thing or a bad thing?
The first thing most web developers probably thought this morning when they learned about Safari for Windows was "oh man, yet another browser to test in". And yes, for the moment, that's what it amounts to. Coincidentally, I have spent a good part of last week making the history management in ......
Microsoft Ajax events - part 2: exposing events from custom classes
In part 1, I showed how to subscribe to events exposed by JavaScript classes built on Microsoft Ajax. In this post, I'll show how to expose new events from your own classes.
Theoretically, the only things you have to do to expose an event are to implement "add_myEvent" and "remove_myEvent"......
Microsoft Ajax events - part 1: subscribing
When building Ajax applications, you basically deal with two kinds of events. First, there are DOM events, and second, events from JavaScript objects. This second category is not part of the EcmaScript specs (or of the DOM specs, of course) so each framework needs to define its own pattern to expos......
Woohoo! I'm on TV!
The latest episode of the .NET show is all about ASP.NET Ajax. Brad and Matt first have a really interesting discussion of the history and architecture of ASP.NET Ajax and then you can see me demo-ing UpdatePanel, extenders and localization.Most of the demos are extracted from the short book Matt ......
The format for JavaScript doc comments
Xml documentation annotations are going to drive JavaScript IntelliSense in Visual Studio Orcas (the next version of Visual Studio). For more than a year now, we've been including xml doc comments to all public APIs in the Microsoft Ajax Library (which are a great place to check out some examp......
How to keep some context attached to a JavaScript event handler?
The problem is the following... You want to attach a handler to a DOM event but you want some information to remain associated with it. Let's say for example that the handler is a method of an object that makes use of the "this" pointer somewhere in its body (as it should, otherwise it sh......
OpenAjax meetings
It was my great pleasure to be at the face to face OpenAjax Alliance meetings for the first time last month. Thanks to the nice people at IBM for hosting them. I really enjoyed the discussions with Alex from Dojo, Gideon from OpenSpot and many others. There were also great demos of OpenAjax-ba......
Scott on JSON hijacking
Scott has a great post on how ASP.NET Ajax has built-in mitigations already in place for JSON hijacking attacks:http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx...
ASP.NET Ajax UpdatePanel PDF erratum
I corrected a few remaining errors in our O'Reilly shortcut on UpdatePanel (mainly references to the old Atlas codename). If you already bought it, you can download the new version for free. And if you haven't, what are you waiting for? ;)http://www.oreilly.com/catalog/atlasupc...
Microsoft joins OpenAjax
I'm extremely pleased to announce that we're joining OpenAjax today and that I'll represent the company in the organization's meetings starting this Thursday. This is a way for us to ensure that our user community can combine the Microsoft AJAX Library and ASP.NE......
What are these Foo$Bar$baz functions in the Microsoft Ajax Library files?
If you've looked at the debug version of our JavaScript files, you may have noticed code similar to that:Foo.Bar = function Foo$Bar() {
Foo.Bar.initializeBase(this);
}
function Foo$Bar$baz() {
// Do something
}
Foo.Bar.prototype = {
baz: Foo$Bar$baz
}
Foo.Bar.registerClass('Foo.Bar');
......