| DotNetKicks.com Links |
| In Depth ASP.NET using ADO.NET: Part III ... In this article we will discuss a number of ways to retrieve, show, and update data with ASP.NET forms using ADO.NET. Also, we will have a clear idea about the most common server controls in ASP.NET. | Go |
| Warning: Page has Expired - when users click the back button in IE ... It's possible to avoid this situation, if you're willing to have some additional HTTP traffic. In the ASP.NET code, add a function to handle the PreRender event, and have that emit client-side script so that IE will make a GET request to actually display the page. | Go |
| Make Sure Item is Selected For Deletion in ListView Prior to Post Back ... I have been adding the ability to delete multiple items in a ListView for a while now. One thing that has been bugging me though was the user could click the button to delete the selected items even if no items were selected which would popup a delete confirmation. If the user clicked yes, then a post back would occur and be confusing. | Go |
| VistaDB Providers ... Membership, Role and Profile providers for VistaDB | Go |
| Dynamic Drop-Down Menus in ASP.Net 2.0 / 3.5 ... One of the most essential components to a solid site is a versatile and intuitive navigational drop-down menu.
It's a variation of an ASP.Net 1.1 solution previously published in 2003 by WROX. It works, but it's a slight modification from the 1.1 version, and it seemed a little cumbersome to customize the look and feel, so I continued to look for something designed specifically for 2.0 and up that would be simple to use out-of-the-box and easy to customize.
Surely enough, I stumbled upon a solution that met my three goals, written by ScottGu (http://weblogs.asp.net/scottgu/archive/2006/05/02/444850.aspx)
To build a drop-down menu, we need the following:
1. Data Feed
2. CSS Stylesheet
3. Server-side control that will generate a menu from #1 and #2.
The data feed is your standard web.sitemap (http://msdn.microsoft.com/en-us/library/system.web.sitemap.aspx) that you can build in Visual Studio that looks something like this:
<xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
The server side control is our typical with a SiteMapProvider, which is just responsible for reading in the data feed - in this case our web.sitemap file.
The CSS is the tricky part. Using out-of-the-box simplified customizations won't get you your desired result, and if it will, chances are it probably won't look the same from browser to browser. Our solution:
CSS Control Adapter Toolkit for ASP.Net 2.0
You can download it here: http://www.codeplex.com/cssfriendly
The toolkit essentially takes the worry out of coding for cross-browser compliance by providing ASP.Net controls that are already formatted in CSS to look pretty and the same in all common browsers, which is fantastic, because usually, you have to buy a component like this.
For our drop-down menu, you can do vertical or horizontal; it uses CSS best practices by utilizing ul/li's instead of tables.
Check out ScottGu's blog to get the code, documentation, and a more detailed explanation of exactly how to build, install, and use the drop-down menu with the CSS Control Adapter Toolkit. | Go |
| Get started JQuery by example in 15 mins : Reduce Your Javascript Size ... A 15 minute startup tutorial that will enable you do things that you could not imagine doing in a day in regular Javascript | Go |
| $("Microsoft").append("excitement"); ... Right now is honestly the most excited that I have ever been about the .net platform. With IronRuby and ASP.NET MVC on the horizon and jQuery being integrated as part of the official Microsoft development platform, I think that Microsoft is finally "getting" web development. | Go |
| Mosaic View in Image Gallery ... ImageGallery is an ASP.NET Control for publishing Image Galleries on the web using Web Image Folders, Flickr and Picasa. | Go |
| Custom jQuery Selector for ASP.NET WebForms ... My quest for a better way to select ASP.NET auto-generated IDs with jQuery. | Go |
| You can also register your ASP.NET Web User Controls in Web.Config? ... In Tip#8 we saw how to create a Web User control, register a Web User Control and use the Web User control in your page. Note that VS added a @Register directive right at the top of the page on drag drop of the user control on to your page. But in future if you want to move the location of your User controls you will be forced to change the Register directive in multiple places depending on how many pages you have used the User Control. This could be a pain. This can be easily solved by moving the registration of the user control to your Web.config file with the following entry, so that any change in location can be updated only at one place. | Go |
| MonoRail with VS 2008 ... A workaround to use monorail templates with VS 2008 | Go |
| ASP.NET MVC Request Flow ... I looked all over the net for a good diagram that outlined the major classes involved an ASP.NET MVC request. I couldn't find one, and so I created this one. If you want to get a very high level overview, then check it out. | Go |
| ModelBinders in ASP.NET MVC ... Model Binders provide a way for complex types to be de-serialized from the incoming HTTP input, and passed to a Controller action method as arguments. | Go |
| ASP.NET MVC UpdateModel and TryUpdateModel for DataBinding ... ASP.NET MVC has some really nice helpers for databinding and validation that can assist one with a lot of the simple scenarios. I mentioned custom model binders and the ComplexModelBinder, but one can also explicitly call UpdateModel and TryUpdateModel on your controllers to populate custom classes from form values on your Views. | Go |
| Delicious tagged ASP.NET Links |
| Scott Hanselman's Computer Zen - jQuery to ship with ASP.NET MVC and Visual Studio | Go |
| How do we write test automation for ASP.NET? - Asp.Net QA Team | Go |
| jQuery and Microsoft - ScottGu's Blog | Go |
| Simulate a Windows Service Using ASP.NET to Run Scheduled Jobs | Go |
| CodeThinked | ASP.NET MVC Request Flow | Go |
| An Introduction to jQuery - Part 1: The Client Side | Go |
| Site AuctionOffer.com | Go |
| URL Rewriting in ASP.NET using URLRewriter.Net | Go |
| Scott Gu Blog Links |
| jQuery and Microsoft ... jQuery is a lightweight open source JavaScript library (only 15kb in size) that in a relatively short span of time has become one of the most popular libraries on the web. A big part of the appeal of jQuery is that it allows you to elegantly (and efficiently) find and manipulate HTML elements with minimum lines of code. jQuery supports this via a nice "selector" API that allows developers to query for HTML elements, and then apply "commands" to them. One of the characteristics of jQuery commands is that they can be "chained" together - so that the result of one command can feed into another. jQuery also includes a built-in set of animation APIs that can be used as commands. The combination allows you to do some really cool things with only a few keystrokes. For example, the below JavaScript uses jQuery to find all <div> elements within a page that have a CSS class of "product", and then animate them to slowly disappear: As another example, the JavaScript below uses jQuery to find a specific <table> on the page with an id of "datagrid1", then retrieves every other <tr> row within the datagrid, and sets those <tr> elements to have a CSS class of "even" - which could be used to alternate the background color of each row: [Note: both of these samples were adapted from code snippets in the excellent jQuery in Action book] Providing the ability to perform selection and animation operations like above is something that a lot of developers have asked us to add to ASP.NET AJAX, and this support was something we listed as a proposed feature in the ASP.NET AJAX Roadmap we published a few months ago. As the team started to investigate building it, though, they quickly realized that the jQuery support for these scenarios is already excellent, and that there is a huge ecosystem and community built up around it already. The jQuery library also works well on the same page with ASP.NET AJAX and the ASP.NET AJAX Control Toolkit. Rather than duplicate functionality, we thought, wouldn't it be great to just use jQuery as-is, and add it as a standard, supported, library in VS/ASP.NET, and then focus our energy building new features that took advantage of it? We sent mail the jQuery team to gauge their interest in this, and quickly heard back that they thought that it sounded like an interesting idea too. Supporting jQuery I'm excited today to announce that Microsoft will be shipping jQuery with Visual Studio going forward. We will distribute the jQuery JavaScript library as-is, and will not be forking or changing the source from the main jQuery branch. The files will continue to use and ship under the existing jQuery MIT license. We will also distribute intellisense-annotated versions that provide great Visual Studio intellisense and help-integration at design-time. For example: and with a chained command: The jQuery intellisense annotation support will be available as a free web-download in a few weeks (and will work great with VS 2008 SP1 and the free Visual Web Developer 2008 Express SP1). The new ASP.NET MVC download will also distribute it, and add the jQuery library by default to all new projects. We will also extend Microsoft product support to jQuery beginning later this year, which will enable developers and enterprises to call and open jQuery support cases 24x7 with Microsoft PSS. Going forward we'll use jQuery as one of the libraries used to implement higher-level controls in the ASP.NET AJAX Control Toolkit, as well as to implement new Ajax server-side helper methods for ASP.NET MVC. New features we add to ASP.NET AJAX (like the new client template support ) will be designed to integrate nicely with jQuery as well. We also plan to contribute tests, bug fixes, and patches back to the jQuery open source project. These will all go through the standard jQuery patch review process. Summary We are really excited to be able to partner w | Go |
| Silverlight 2 Release Candidate Now Available ... This evening we published the first public release candidate of Silverlight 2. There are still a small handful of bugs fixes that we plan to make before we finally ship. We are releasing today's build, though, so that developers can start to update their existing Silverlight Beta2 applications so that they'll work the day the final release ships, as well as to enable developers to report any last minute showstopper issues that we haven't found internally (please report any of these on the www.silverlight.net forums). Important: We are releasing only the Silverlight Developer Runtime edition (as well as the VS and Blend tools to support it) today, and are not releasing the regular end-user edition of Silverlight. This is because we want to give existing developers a short amount of time to update their applications to work with the final Silverlight 2 APIs before sites are allowed to go live with it. There are some breaking changes between Beta2 and this RC, and we want to make sure that existing sites can update to the final release quickly once the final release is out. As such, you can only use the RC for development right now - you can't go live with the new APIs until the final release is shipped (which will be soon though). You can download today's Silverlight Release Candidate and accompanying VS and Blend support for it here . Note that Expression Blend support for Silverlight 2 is now provided using Blend 2.0 SP1. You will need to install Blend 2.0 before applying the SP1 service pack that adds Silverlight 2 support. If you don't already have Blend 2.0 installed you can download a free trial of it here . Beta2->RC API Updates Today's release candidate includes a ton of bug fix and some significant performance optimization work. Today's release candidate also includes a number of final API tweaks designed to fix differences between Silverlight and the full .NET Framework. Most of these changes are relatively small (order of parameters, renames of methods/properties, movement of types across namespaces, etc) although there are a number of them. You can read this blog post and download this document to get a listing of the known API breaking changes made from the Beta2 release. We have updated the styles of the controls shipped with Silverlight, and have also modified some of the state groups and control template names they use. When upgrading from Beta2 you might find it useful to temporarily remove any custom style templates you've defined, and get your application functionality working using the RC first - and then after that works add back in the styles one style definition at a time to catch any rename/behavior change issues with them. If you find yourself stuck with an question/issue moving from Beta2 to the RC, please report it on the www.silverlight.net forums (Silverlight team members will be on there helping folks). If after a day or two you aren't getting an answer please send me email (scottgu@microsoft.com ) and I can help or connect you with someone who knows the answer. New Controls Today's release candidate includes a bunch of feature additions and tweaks across Silverlight 2, as well as in the VS and Blend tools targeting it. In general you'll find a number of nice improvements across the controls, networking, data caching, layout, rendering, media stack, and other components and sub-systems. Over the next few months we will be releasing a lot of new Silverlight 2 controls (more details on these soon). Today's release candidate includes three new core controls - ComboBox, ProgressBar, and PasswordBox - that we are adding directly to the core Silverlight runtime download (which is still only 4.6MB in size, and only takes a few seconds to install): At runtime these controls by default look like: The ComboBox in Silverlight 2 supports standard DropDownList semantics. In addition to statically defining items like above, you | Go |
| ASP.NET MVC Preview 5 and Form Posting Scenarios ... This past Thursday the ASP.NET MVC feature team published a new "Preview 5" release of the ASP.NET MVC framework. You can download the new release here . This "Preview 5" release works with both .NET 3.5 and the recently released .NET 3.5 SP1. It can also now be used with both Visual Studio 2008 as well as (the free) Visual Web Developer 2008 Express SP1 edition (which now supports both class library and web application projects). Preview 5 includes a bunch of new features and refinements (these build on the additions in "Preview 4" ). You can read detailed "Preview 5" release notes that cover changes/additions here . In this blog post I'm going to cover one of the biggest areas of focus with this release: form posting scenarios. You can download a completed version of the application I'll build below here . Basic Form Post with a Web MVC Pattern Let's look at a simple form post scenario - adding a new product to a products database: The page above is returned when a user navigates to the "/Products/Create" URL in our application. The HTML form markup for this page looks like below: The markup above is standard HTML. We have two <input type="text"/> textboxes within a <form> element. We then have an HTML submit button at the bottom of the form. When pressed it will cause the form it is nested within to post the form inputs to the server. The form will post the contents to the URL indicated by its "action" attribute - in this case "/Products/Save". Using the previous "Preview 4" release of ASP.NET we might have implemented the above scenario using a ProductsController class like below that implements two action methods - "Create" and "Save": The "Create" action method above is responsible for returning an html view that displays our initial empty form. The "Save" action method then handles the scenario when the form is posted back to the server. The ASP.NET MVC framework automatically maps the "ProductName" and "UnitPrice" form post values to the method parameters on the Save method with the same names. The Save action then uses LINQ to SQL to create a new Product object, assigns its ProductName and UnitPrice values with the values posted by the end-user, and then attempts to save the new product in the database. If the product is successfully saved, the user is redirected to a "/ProductsAdded" URL that will display a success message. If there is an error we redisplay our "Create" html view again so that the user can fix the issue and retry. We could then implement a "Create" HTML view template like below that would work with the above ProductsController to generate the appropriate HTML. Note below that we are using the Html.TextBox helper methods to generate the <input type="text"/> elements for us (and automatically populate their value from the appropriate property in our Product model object that we passed to the view): Form Post Improvements with Preview 5 The above code works with the previous "Preview 4" release, and continues to work fine with "Preview 5". The "Preview 5" release, though, adds several additional features that will allow us to make this scenario even better. These new features include: The ability to publish a single action URL and dispatch it differently depending on the HTTP Verb Model Binders that allow rich parameter objects to be constructed from form input values and passed to action methods Helper methods that enable incoming form input values to be mapped to existing model object instances within action methods Improved support for handling input and validation errors (for example: automatically highlighting bad fields and preserving end-user entered form values when the form is redisplayed to the user) I'll use the remainder of this blog post to drill into each of these scenarios. [AcceptVerbs] and [ActionName] attributes In our sample above we implemented ou | Go |
| Quick Update ... I've received a number of (very nice) emails recently asking if I was ok - since my blog has been silent the last few weeks (and much of the summer). Just to address people's concerns - I'm alive and well. :-) I've just been on vacation the last 6 weeks, and have unfortunately not had free time to post (I've been changing a lot of diapers). I am still on vacation another week before I officially return to work. I did get a chance to write up a quick post this weekend that covers some of the new ASP.NET MVC Preview 5 features, though, that will hopefully provide some interim reading until I can resume a more regular posting schedule over the next month when I get back into the office. Thanks, Scott P.S. Somewhat to my embarrassment I started a Part1/Part2 post on "Preview 4" right before I left for vacation, and didn't have time to finish part 2 before "Preview 5" came out. I am going to post this lost segment (which covered AJAX) later this month and write it against the latest preview build. P.P.S. People often ask me whether I write my own blog. Yep - I actually really do write every single post. Hopefully my absence the last 6 weeks provides some evidence to support this. :-) | Go |
| ASP.NET MVC Preview 4 Release (Part 1) ... The ASP.NET MVC team is in the final stages of finishing up a new "Preview 4" release that they hope to ship later this week. The Preview 3 release focused on finishing up a lot of the underlying core APIs and extensibility points in ASP.NET MVC. Starting with Preview 4 this week you'll start to see more and more higher level features begin to appear that build on top of the core foundation and add nice productivity. There are a bunch of new features and capabilities in this new build - so much in fact that I decided I needed two posts to cover them all. This first post will cover the new Caching, Error Handling and Security features in Preview 4, as well as some testing improvements it brings. My next post will cover the new AJAX features being added with this release as well. Understanding Filter Interceptors Action Filter Attributes are a useful extensibility capability in ASP.NET MVC that was first added with the "Preview 2" release. These enable you to inject code interceptors into the request of a MVC controller that can execute before and after a Controller or its Action methods execute. This enables some nice encapsulation scenarios where you can easily package-up and re-use functionality in a clean declarative way. Below is an example of a super simple "ScottGuLog" filter that I could use to log details about exceptions raised during the execution of a request. Implementing a custom filter class is easy - just subclass the "ActionFilterAttribute" type and override the appropriate methods to run code before or after an Action method on the Controller is invoked, and/or before or after an ActionResult is processed into a response. Using a filter within a ASP.NET MVC Controller is easy - just declare it as an attribute on an Action method, or alternatively on the Controller class itself (in which case it will apply to all Action methods within the Controller): Above you can see an example of two filters being applied. I've indicated that I want my "ScottGuLog" to be applied to the "About" action method, and that I want the "HandleError" filter to be applied to all Action methods on the HomeController. Previous preview releases of ASP.NET MVC enabled this filter extensibility, but didn't ship with pre-built filters. ASP.NET Preview 4 now includes several useful filters for handling output caching, error handling and security scenarios. OutputCache Filter The [OutputCache] filter provides an easy way to integrate ASP.NET MVC with the output caching features of ASP.NET (with ASP.NET MVC Preview 3 you had to write code to achieve this). To try this out, modify the "Message" value set within the "Index" action method of the HomeController (created by the VS ASP.NET MVC project template) to display the current time: When you run your application you'll see that a timestamp updates each time you refresh the page: We can enable output caching for this URL by adding the [OutputCache] attribute to the our Action method. We'll configure it to cache the response for a 10 second duration using the declaration below: Now when you hit refresh on the page you'll see that the timestamp only updates every 10 seconds. This is because the action method is only being called once every 10 seconds - all requests between those time intervals are served out of the ASP.NET output cache (meaning no code needs to run - which makes it super fast). In addition to supporting time duration, the OutputCache attribute also supports the standard ASP.NET output cache vary options (vary by params, headers, content encoding, and custom logic). For example, the sample below would save different cached versions of the page depending on the value of an optional "PageIndex" QueryString parameter, and automatically render the correct version depending on the incoming URL's querystring value: You can also integrate with the ASP.NET Database Cache Invalidation feature - which allows you t | Go |
| Silverlight 2 Beta2 Released ... Silverlight 2 Beta2 was released today. You can download both Silverlight 2 Beta2 and the Visual Studio and Expression Blend tools support to target it here . Beta2 adds a lot of new features (more details below), but is still a 4.6 MB download that takes less than 10 seconds to install on a machine. It does not require the .NET Framework or any other software to be installed for it to work, and all features work cross-browser on both Mac and Windows machines. These features will also be supported on Linux via the Moonlight 2 release. Silverlight 2 Beta2 supports a go-live license that allows you to start using and deploying Silverlight 2 for commercial applications. There will be some API changes between Beta2 and the final release, so you should expect that applications you write with Beta2 will need to make some updates when the final release comes out. But we think that these changes will be straight-forward and relatively easy, and that you can begin planning and starting commercial projects now. You can build Silverlight Beta2 applications using the VS 2008 Tools for Silverlight and Expression Blend 2.5 June Preview downloads. You can download both of them here . The VS 2008 Tools for Silverlight download works with both VS 2008 and the recent VS 2008 SP1 beta release. UI and Control Improvements Silverlight 2 Beta2 includes a bunch of work in the UI and Control space: More Built-in Controls In Beta 1 only a few controls were included with the core Silverlight setup. Most common controls (including Button, ListBox, Slider, etc) were shipped within separate assemblies that you had to bundle with your applications (which increased the app download size). Beta 2 now installs 30+ of the most common controls as part of the core Silverlight 2 download. This means that you can now build Silverlight 2 applications that use core controls that are as small as 3kb in size - making Silverlight application downloads small and startup time fast. In addition to the core controls included with the base Silverlight 2 setup, we are also this week shipping additional higher-level controls that are implemented in separate assemblies that you can then reference and include with your applications. This includes controls like DataGrid (more details on its new Beta2 features below), Calendar (now with multi-day selection and blackout date support in Beta2), and a TabPanel control (new in Beta2). We ultimately expect to ship over a 100 controls for Silverlight. Control Template Editing Support One of the most powerful features of the WPF and Silverlight programming model is the ability to completely customize the look and feel of controls. This allows developers and designers to sculpt the UI of controls in both subtle and dramatic ways, and enables a tremendous amount of flexibility. I covered these concepts a little in my previous Silverlight Control Templating blog post here . This week's Expression Blend 2.5 June Preview now adds designer support for editing control templates - which makes it easy for you to quickly change the look of any control without having to drop-down to XAML source to-do it. To see control template editing in action, just drag/drop two Slider controls onto the Expression Blend design surface: We might decide that the slider head in the default Slider control template is too large and wide for our application. To use control template editing to change it, we can right-click on one of the sliders in the designer and select the "Edit Control Parts" context menu item. We can choose to create a new empty control template for our slider (and start from scratch), or alternatively edit a copy of the built-in control template (and start from that and tweak it): After we choose to edit a copy of the existing control template, Blend will prompt us to create and name a re-usable style resource that we'll define our control template wit | Go |
| ASP.NET MVC Support with Visual Web Developer 2008 Express ... Last week I blogged about the ASP.NET MVC Preview 3 release . One important thing I forgot to mention about this release is that you can now use it with both Visual Studio 2008 as well as the free Visual Web Developer 2008 Express edition. The SP1 release of Visual Web Developer 2008 Express adds support for both class library projects as well as web application projects (previously only web site projects could be used with it). This new support is useful in itself, as well as in enabling both ASP.NET MVC and Silverlight project support with VWD Express. If you install the Visual Web Developer Express SP1 Beta you can start using ASP.NET MVC Preview 3 with it immediately. Important: ASP.NET MVC Preview 3 does not require SP1 to be installed if you are using Visual Studio 2008. ASP.NET MVC Preview 3 will work with both VS 2008 and VS 2008 SP1 just fine. You can learn more about the new VWD Express support for ASP.NET MVC from the VS Web Tools team blog here . This post also includes a free web download that provides ASP.NET MVC Test project support for NUnit-based unit tests. You can use these NUnit project templates with both Visual Studio 2008 as well as with Visual Web Developer Express 2008. Hope this helps, Scott | Go |
| ASP.NET MVC Preview 3 Release ... This morning we released the Preview 3 build of the ASP.NET MVC framework. I blogged details last month about an interim source release we did that included many of the changes with this Preview 3 release. Today's build includes some additional features not in last month's drop, some nice enhancements/refinements, as well as Visual Studio tool integration and documentation. You can download an integrated ASP.NET MVC Preview 3 setup package here . You can also optionally download the ASP.NET MVC Preview 3 framework source code and framework unit tests here . Controller Action Method Changes ASP.NET MVC Preview 3 includes the MVC Controller changes we first discussed and previewed with the April MVC source release , along with some additional tweaks and adjustments. You can continue to write controller action methods that return void and encapsulate all of their logic within the action method. For example: which would render the below HTML when run: Preview 3 also now supports using an approach where you return an "ActionResult" object that indicates the result of the action method, and enables deferred execution of it. This allows much easier unit testing of actions (without requiring the need to mock anything). It also enables much cleaner composition and overall execution control flow. For example, we could use LINQ to SQL within our Browse action method to retrieve a sequence of Product objects from our database and indicate that we want to render a View of them. The code below will cause three pieces of "ViewData" to be passed to the view - "Title" and "CategoryName" string values, and a strongly typed sequence of products (passed as the ViewData.Model object): One advantage of using the above ActionResult approach is that it makes unit testing Controller actions really easy (no mocking required). Below is a unit test that verifies the behavior of our Browse action method above: We can then author a "Browse" ViewPage within the \Views\Products sub-directory to render a response using the ViewData populated by our Browse action: When we hit the /Products/Browse/Beverages URL we'll then get an HTML response like below (with the three usages of ViewData circled in red): Note that in addition to support a "ViewResult" response (for indicating that a View should be rendered), ASP.NET MVC Preview 3 also adds support for returning "JsonResult" (for AJAX JSON serialization scenarios), "ContentResult" (for streaming content without a View), as well as HttpRedirect and RedirectToAction/Route results. The overall ActionResult approach is extensible (allowing you to create your own result types), and overtime you'll see us add several more built-in result types. Improved HTML Helper Methods The HTML helper methods have been updated with ASP.NET MVC Preview 3. In addition to a bunch of bug fixes, they also include a number of nice usability improvements. Automatic Value Lookup With previous preview releases you needed to always explicitly pass in the value to render when calling the Html helpers. For example: to include a value within a <input type="text" value="some value"/> element you would write: The above code continues to work - although now you can also just write: The HTML helpers will now by default check both the ViewData dictionary and any Model object passed to the view for a ProductName key or property value to use. SelectList and MultiSelectList ViewModels New SelectList and MultiSelectList View-Model classes are now included that provide a cleaner way to populate HTML dropdowns and multi-select listboxes (and manage things like current selection, etc). One approach that can make form scenarios cleaner is to instantiate and setup these View-Model objects in a controller action, and then pass them in the ViewData dictionary to the View to format/render. For example, below I'm creating a SelectList view-model class over the | Go |
| May 20th Links: ASP.NET, ASP.NET AJAX, .NET, Visual Studio, Silverlight, WPF ... Apologies for the sparseness of my posting the last few weeks - work and life have been busy here lately. Below is a new post in my link-listing series to help kick things up a little. Also check out my ASP.NET Tips, Tricks and Tutorials page and Silverlight Tutorials page for links to popular articles I've done myself in the past. ASP.NET Bulk Inserting Data with the ListView Control : Matt Berseth continues his awesome posts with one that shows how to handle bulk-editing of data using the ASP.NET ListView control in .NET 3.5. Master-Detail with the GridView, DetailsView, and ModalPopup Controls : Another great post from Matt that describes how to cleanly handle a common data entry scenario. Creating Great Thumbnail Images in ASP.NET : A really nice blog post by a different Matt that details an approach that generates high quality (and small) thumbnail images. Warning the User when Caps-Lock is on : Scott Mitchell has a nice article that describes how to automatically detect and warn users in login pages when the caps-lock button is on. ASP.NET Perf Issue: Large numbers of application-restarts due to virus scanners : Tess Ferrandez has a great post that details a debug session to determine why an ASP.NET application was restarting frequently (causing performance slowdowns). The issue was a virus scanner that was causing files to be constantly updated. Make sure to check out the logging code you can add to your application to identify restart causes like this. ASP.NET AJAX ASP.NET AJAX Progress Bar Control : Matt Berseth has another great article that describes his new ASP.NET AJAX Progress Bar control. Faster Page Loading By Combining Multiple JavaScript files in Batch : Omar Al Zabir (founder of PageFlakes.com and author of the great Building a Web 2.0 Portal with ASP.NET 3.5 book) has a good article that describes the performance benefit of merging multiple JavaScript file downloads. Note that .NET 3.5 SP1 will include a new script combiner feature that helps make doing this even easier. Create ASP.NET AJAX Server Controls using the ScriptControl base class : Chris Pietschmann has a nice article that talks about how to build new ASP.NET AJAX server controls by deriving from the built-in ScriptControl base class. Inline Edit Box and Postback Ritalin Beta : Dave Ward and Mike Davis have created a new CodePlex project for their popular Inline Edit Box and PostBack Ritalin ASP.NET AJAX controls. .NET 7 Ways to Simplify your code with LINQ : Igor Ostrovsky has a great blog post that talks about new code techniques you can use to improve your code using .NET 3.5 and the new language and LINQ features in it. Visual LINQ Query Builder for LINQ to SQL : Mitsu Furuta has created a cool Visual Studio designer that allows you to graphically construct LINQ to SQL queries. Also make sure to download download the latest LINQPad utility - which is invaluable for learning LINQ and trying out LINQ queries. DataContracts without Attributes (POCO support): Aaron Skonnard has a good post that talks about a nice usability change with .NET 3.5 SP1 that allows you to serialize POCO (plain old objects) using the WCF serializers. Ukadc.Diagnostics : Josh Twist pointed me at a new CodePlex project he is working on that extends the System.Diagnostics features in .NET to include richer logging features (SQL trace support, email support, etc). Visual Studio 11 More VS Short Cuts you Should Know : A great post that talks about a bunch of useful shortcuts to print out and remember when using Visual Studio. Did you know you can show extension methods in the object browser?: Sara Ford continues her excellent "Did you know" series. I confess I didn't know this one. Silverlight 50 New Silverlight 2 Beta 1 Screencasts: Mike Taulty and Mike Ormond have put together 50 nice tutorial screen-casts that cover Silverlight 2 - all in their "spare time". Wow. AutoComplete for Silverlight TextBoxes : Nikhil Kothari has a | Go |
| Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta ... Earlier today we shipped a public beta of our upcoming .NET 3.5 SP1 and VS 2008 SP1 releases. These servicing updates provide a roll-up of bug fixes and performance improvements for issues reported since we released the products last November. They also contain a number of feature additions and enhancements that make building .NET applications better (see below for details on some of them).
We plan to ship the final release of both .NET 3.5 SP1 and VS 2008 SP1 this summer as free updates. You can download and install the beta here .
Important: SP1 Beta Installation Notes
The SP1 beta released today is still in beta form - so you should be careful about installing it on critical machines. There are a few important SP1 Beta installation notes to be aware of:
1) If you are running Windows Vista you should make sure you have Vista SP1 installed before trying to install .NET 3.5 SP1 Beta. There are some setup issues with .NET 3.5 SP1 when running on the Vista RTM release. These issues will be fixed for the final .NET 3.5 SP1 release - until then please make sure to have Vista SP1 installed before trying to install .NET 3.5 SP1 beta.
2) If you have installed the VS 2008 Tools for Silverlight 2 Beta1 package on your machine, you must uninstall it - as well as uninstall the KB949325 update for VS 2008 - before installing VS 2008 SP1 Beta (otherwise you will get a setup failure). You can find more details on the exact steps to follow here (note: you must uninstall two separate things). It is fine to have the Silverlight 2 runtime on your machine with .NET 3.5 SP1 - the component that needs to be uninstalled is the VS 2008 Tools for Silverlight 2 package. We will release an updated VS 2008 Tools for Silverlight package in a few weeks that works with the VS 2008 SP1 beta.
3) There is a change in behavior in the .NET 3.5 SP1 beta that causes a problem with the shipping versions of Expression Blend. This behavior change is being reverted for the final .NET 3.5 SP1 release, at which time all versions of Blend will have no problems running. Until then, you need to download this recently updated version of Blend 2.5 to work around this issue.
Important Update : If you previously installed a VS 2008 Hotfix, you must run the HotFix Cleanup Utility before installing the VS 2008 SP1 Beta. Click here to download and run this.
Improvements for Web Development
.NET 3.5 SP1 and VS 2008 SP1 contain a bunch of feature improvements targeted at web application development.
The VS Web Dev Tools team has more details (including specific bug fix details) on some of the VS specific work here . Below are more details on some of the work in the web-space:
ASP.NET Data Scaffolding Support (ASP.NET Dynamic Data)
.NET 3.5 SP1 adds support for a rich ASP.NET data "scaffolding" framework that enables you to quickly build functional data-driven web application. With the ASP.NET Dynamic Data feature you can automatically build web UI (with full CRUD - create, read, update, delete - support) against a variety of data object models (including LINQ to SQL, LINQ to Entities, REST Services, and any other ORM or object model with a dynamic data provider).
SP1 adds this new functionality to the existing GridView, ListView, DetailsView and FormView controls in ASP.NET, and enables smart validation and flexible data templating options. It also delivers new smart filtering server controls, as well as adds support for automatically traversing primary-key/foreign-key relationships and displaying friendly foreign key names - all of which saves you from having to write a ton of code.
You can learn more more about this feature from Scott Hanselman's videos and tutorials here .
ASP.NET Routing Engine (System.Web.Routing)
.NET 3.5 SP1 includes a flexible new URL routing engine that allows you to map incoming URLs to route handlers. It includes support for both parsing parameters from clean URLs (for example: /Products/Browse/Beverages), as well as supp | Go |
| Professional ASP.NET 3.5 Book (only $16 on Amazon for a short time) ... One of the things I like to track are book sales on Amazon.com, which provides a useful data point to monitor what developers are interested in on any given day. I use the www.TitleZ.com site (which is built using ASP.NET) to track specific titles I want to watch - it then generates a report showing real-time Amazon sales ranking data, as well as 7 day, 30 day and 90 day sales ranking averages. This morning I pulled up my report and saw the usual books near the top of my list, and was about to navigate away when I noticed the eye-popping amazon ranking of the top book -"Professional ASP.NET 3.5: In C# and VB " by Bill Evjen, Scott Hanselman and Devin Rader. Its Amazon sales rank was a stunning #95 (of all books on Amazon), which meant it was outselling even Harry Potter (which is pretty much unheard of for any technology book). It turns out that Amazon is holding a special price promotion for a short time on a few books - and this was one that was selected. Instead of the usual $54 price, you can buy it for a short time for a ridiculous $16.49. I'm not sure how long this promotion will last - but if you are looking for a great ASP.NET 3.5 book this might be something you might want to take advantage of: The book is a great ASP.NET 3.5 book and an excellent end to end resource. It has been on the best seller list for programming books since it came out in March (usually in the top 5 of all programming titles), and has received glowing reviews (I posted a review of it on Amazon a few weeks ago and gave it 5 stars). If you are in the market for a good ASP.NET book, you might want to consider taking Amazon up on this offer before it closes (and apologies in advance if the price changes before you read this). Hope this helps, Scott P.S. If you are looking for other good .NET 3.5 and VS 2008 books - I also recommend: C# 3.0 In a Nutshell , LINQ in Action , and Pro LINQ: Language Integrated Query in C# 2008 (all of which average a 5 star rating on Amazon). | Go |
| April 28th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Silverlight ... Here is the latest in my link-listing series . Also check out my ASP.NET Tips, Tricks and Tutorials page and Silverlight Tutorials page for links to popular articles I've done myself in the past. ASP.NET Displaying the Number of Active Users on an ASP.NET Site : Scott Mitchell continues his excellent series on ASP.NET's membership, roles, and profile support. In this article he discusses how to use ASP.NET's Membership features to estimate and display the number of active users currently visiting a site. ASP.NET Dynamic Data Update : The ASP.NET team last week released an update of the new ASP.NET Dynamic Data feature. This update adds several new features including cleaner URL support using the same URL routing feature that ASP.NET MVC uses, as well as better confirmation, foreign-key, and template support. ASP.NET Testing with Ivonna : Travis Illig blogs about a new testing framework named Ivonna that enables unit testing of ASP.NET web forms. ASP.NET AJAX ASP.NET AJAX UI Templates : Nikhil Kothari from the ASP.NET team has a cool post that shows off a prototype he has been working on that enables clean client-side AJAX templating of UI. ASP.NET AJAX Control Toolkit TabContainer Theme Gallery : Matt Berseth has another of his excellent posts - this one shows off a bunch of cool themes you can use to style the TabContainer control in the ASP.NET AJAX Control Toolkit. Reducing Page Load Times with UpdatePanels and Timers : Paul Glavich posts of a cool trick you can use with tab controls to asynchronously load their content in the background in order to improve perceived page load time. Why do ASP.NET AJAX page methods have to be static? Dave Ward has a useful article that talks about the page methods feature in ASP.NET AJAX, and explains why they are static methods. JQuery Intellisense in VS 2008 : Brad Vincent posts about using the VS 2008 Web Development Hot-Fix we released in February to get a nice JavaScript intellisense experience in Visual Studio 2008 when using the JQuery AJAX library. ASP.NET MVC Inversion of Control, ASP.NET MVC and Unit Testing : Fredrik Kalseth has a cool article that talks about the concepts behind inversion of control (IOC) and how you can use this with ASP.NET MVC to better isolate dependencies and enable better unit testing of your code. Stephen Walther's ASP.NET MVC Talk: Stephen Walther delivered a many-hour ASP.NET MVC post conference talk at ASP.NET Connections last week. You can download his slides + demos for free. Also check out his previous posts on Unit Tests with Visual Studio 2008 and TDD with Rhino Mocks . MVC Contrib Project Update : Eric Hexter blogs about some of the latest updates to the open source MvcContrib project to work with the latest ASP.NET MVC interim source release . Testing Action Results with ASP.NET MVC : Jeremy Skinner blogs about some cool extension method helpers he has added to MvcContrib to enable pretty sweet testing of Controller actions. MVC Membership Starter Kit - 1.2 Release : Troy Goode has posted an update to his excellent MVC Membership Starter Kit. This version works with the interim ASP.NET MVC source release. Silverlight Defining Silverlight DataGrid Columns at Runtime : Scott Morrison from the Silverlight team has a cool blog post that talks about how to define Silverlight DataGrid Columns via code at runtime. Visit my Silverlight links page for more DataGrid posts. Silverlight HTTP Networking Stack (Part 1 ), (Part 2 ), (Part 3 ): Karen Corby from the Silverlight team has a great three part blog series that talks about the new Silverlight 2 networking stack and how cross domain security works with it. Pushing Data to a Silverlight Client with Sockets (Part 1) and (Part 2) : Dan Wahlin demonstrates how to implement a "GameStream" socket server and connect to it from a Silverlight client using Silverlight 2's built-in network sockets support. Silverlight - the Song : Spike Xavier and Dan Wa | Go |
| Slides from my ASP.NET Connections Orlando Talks ... Last week I presented at the ASP.NET Connections Conference in Orlando. I gave a general session talk on Monday, and then two breakout talks later that day. You can download my slides+samples below: General Session The slides for my keynote can be downloaded here . In the talk I demonstrated how to debug the .NET Framework source code. You can learn how to set this up with VS 2008 here . I also demonstrated building a site using the new ASP.NET Dynamic Data support - which you can learn more about here . I also demonstrated using the new ASP.NET MVC Framework - which you can learn more about here . I also showed off the new Hard Rock Memorabilia site built with Silverlight 2. You can try out the Hard Rock application yourself here . You can learn more about Silverlight from my links page here . Building .NET Applications with Silverlight The slides + demos for Silverlight breakout talk can be downloaded here . You can learn more about Silverlight from my links page here . In particular, I recommend reading my tutorial posts here and here . ASP.NET MVC The slides + demos for my ASP.NET MVC talk can be downloaded here . You can learn more about the latest ASP.NET MVC source refresh here . Stephen Walther also just posted a really good set of slides + demos from his post conference tutorial on ASP.NET MVC here . Hope this helps, Scott | Go |
| ASP.NET MVC Source Refresh Preview ... We recently opened up a new ASP.NET CodePlex Project that we will be using to provide previews (with buildable source code) for several upcoming ASP.NET features and releases. Last month we used it to publish the first drop of the ASP.NET MVC source code . This first drop included the source for the ASP.NET MVC Preview 2 release that we shipped at MIX, along with Visual Studio project files to enable you to patch and build it yourself. A few hours ago we published a refresh of the ASP.NET MVC source code on the site. This source refresh is not an official new ASP.NET MVC preview release - instead it is an interim drop that provides a look at the current state of the source tree. We will ship the official "ASP.NET MVC Preview 3" release in a few weeks after we finish up some more work (more features and tweaks to existing ones, better VS tool integration, VS express edition support, documentation, etc). If you are someone who wants a hassle-free installation of ASP.NET MVC to use that ships with documentation and full tool support you'll probably want to wait for this official preview release. If you are someone who wants a chance to see an early "preview of the preview" and have the opportunity to start using and giving feedback on some of the features immediately, today's source refresh is probably interesting to look at. Improvements with this ASP.NET MVC Source Refresh This week's update (which you can download here ) includes a number of improvements to ASP.NET MVC. Some of these include: In addition to posting the source code for the ASP.NET MVC framework, we are also posting the source code for the unit tests that we use to test it. These tests are implemented using MSTest and the open source Moq mocking framework. A VS 2008 project file for the unit tests is included to make it easy to build and run them locally within your VS 2008 IDE. Significantly easier support for testing Controller classes. You can now unit test common Controller scenarios without having to mock any objects (more details on how this works below). Several nice feature additions and usability improvements to the URL routing system (more details below). Creating a New ASP.NET MVC Project You can build your own copy of the ASP.NET MVC assemblies by downloading the MVC source and compiling it locally, or alternatively you can download a VS Template package to get a pre-built version of them along with a Visual Studio project template that you can use to quickly build a new ASP.NET MVC Project that uses the latest bits. After you install the ASP.NET MVC source refresh .VSI template, a new "ASP.NET MVC Application" project template will show up under the "My Templates" section of your "New Project" dialog: This new "My Templates" version of the MVC project template lives side-by-side with the previous ASP.NET MVC Preview 2 release (which you can see above it in the main project templates section of the dialog). This allows you to safely create new projects and and use both the latest source version and the last official preview version on the same machine. When you create a new project using this updated ASP.NET MVC Project template you'll by default get a project that looks like below: This new project solution contains one Controller ("HomeController") under the "\Controllers" directory and two View templates ("About" and "Index") under the "\Views\Home" sub-directory. Both view templates are based on a common master page for the site ("Site.master"), all of whose styles are defined within a "Site.css" file under the "\Content" directory. When you run the application the built-in web-server will automatically start up and you'll see the site's "Home" content: Clicking the "About us" tab will then display the "About" content: The "HomeController" class in the project is responsible for handling both of the URLs above and has two action methods like below: The default "Site.master" templat | Go |
| ASP.net.com Community Links |
| URL Rewriting in ASP.NET using URLRewriter.Net ... Learn to use search engine friendly URLs for your ASP.NET pages | Go |
| Using ASP.NET 3.5 History Control in ASP.NET 2.0 ... As ASP.NET 2.0 does not provide built in support for Back button functionality in AJAX Update Panel,
This post will show you how to use ASP.NET 3.5 Ajax ControlToolKit History control with ASP.NET 2.0, to achieve the back button functionality in ASP.NET 2.0 | Go |
| Using AJAX, LINQ and XML in C# ... AJAX and LINQ are two of the main focuses of Microsoft right now; and no wonder - both have huge potential and power behind them.
In this example, we will show how we can use AJAX coupled with LINQ and XML to create a Web Application that we can use to view stored data instantaneously, as well as add to it in the same way | Go |
| Forms Authentication in ASP.NET with C#: Advance ... This article describe how to create Roles based sccurity using Forms Authentication in easy to follow steps. | Go |
| MVC Preview 5 - Create Dynamic Action Links ... Explains how to add new views to sample project and create dynamic action links on the data coming from database ? Also explains how to use these dynamic actions links to perform database actions.
Sample Videos To Explains All these in action | Go |
| Handling Files and Directories from your web applications. ... Using C#, VB.NET, and ASP.NET to get all files of directory and subdirectory. Simply illustration of working with files and directories in ASP.NET. | Go |
| Programmatically Encrypt and Decrypt Configuration Sections in web.config using ASP.NET ... The ASP.NET Configuration API provides support for encrypting and decrypting configuration sections in web.config. This feature comes extremely handy when you need to hide sensitive information like passwords. In this article, we will explore how to encrypt and decrypt sections of the web.config. | Go |
| Role Based Content Rendering ... Designing a web based Information Management System poses a lot of challenges to developers. One of these challenges is how to provide desired level of security security to different users with different access to an application. You often encouter situations where certain users will be allowed to update specific fields while others can only view them. It is essential to design for adequate security features in the presentation layer of your application. | Go |
| Model Binders in ASP.NET MVC ... Hot off the presses, and new to ASP.NET MVC (Preview 5) is an awesome capability that (in my opinion) revolutionizes the way we design web applications. This feature is being touted (by me) as "the ViewState for MVC". | Go |
| Building On-Demand Master/Detail Grouping Grid with GridView and ASP.NET AJAX Control Toolkit CollapsiblePanelExtender ... Shows how to build on demand master/detail data using GridView, the ASP.NET AJAX Control Toolkit CollapsiblePanelExtender control and ASP.NET AJAX PageMethods. | Go |
| CodeProject.com ASP Links |
| Silverlight on Fly loading (RC0) ... This article is about how to manage xap packages at runtime | Go |
| Windows workflow foundation FAQ ... Windows workflow foundation FAQ | Go |
| Web-Application Framework - Catharsis - part IV - Localization ... Catharsis web-app framework - localization | Go |
| 16 steps to write flexible business validation in C# using validation blocks ... 16 steps to write flexible business validation in C# using validation blocks | Go |
| TB.TreeGrid ... An ASP.NET Webcontrol used to show hierarchy data in grid view | Go |
| Web-Application Framework - Catharsis - part III - Roles ... Catharsis web-app framework - role management | Go |
| Generate Stored Procedure Wrapper Methods and Associated Wrapper Classes ... This tool helps developers generate their ADO.NET stored procedure wrapper methods and any related strongly-typed data object class. | Go |
| Expandable panel inside a GridView ... Another way to expand a detail panel inside a gridview | Go |
| Web-Application Framework - Catharsis - part II. ... Catharsis web-app framework | Go |
| Windows Communication Foundation FAQ quick starter Part 1 ... Windows Communication Foundation FAQ quick starter Part 1 | Go |
| Web-Application Framework - Catharsis - part VIII - Data layer ... Catharsis web-app framework - Data layer | Go |
| Writing Your Own RTF Converter ... An article on how to write a custom RTF parser and converter | Go |
| REST Web Services in ASP.Net 2.0 (c#) ... This article describes how to cheat your way to an elegant url REST web service. | Go |
| Simple Ajax, ASP.NET and C# implementation for a page wait or process screen. ... A simple AJAX approach that includes an HTML page client and, JavaScript making an AJAX call and receiving a response. A remote page that will receive the parameter information and responds to the JavaScript call method with the necessary information. | Go |
| DotNetSlackers.com Links |
| JQuery and ASP.NET MVC ... Where have I been? ;) You probably heard the news already form the GU already, but just in case, we will be shipping JQuerywith Visual Studio. ASP.NET MVC will have the privilege of being one of the first products to include JQuery. I am glad we finally announced this because I got tired of stifling my mouth everytime someone suggested we just include JQuery. :)
As you can see from demos I've done in the past, JQuery will fit nicely with the ASP.NET MVC style of development.... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| How To: Telerik RadGrid for ASP.NET AJAX with ASP.NET MVC ... I've made small example how to use RadGrid for ASP.NET AJAX in Microsoft ASP.NET MVC:
The key here is to inherit from RadGrid and call explicitly desired grid commands. Let's say you want to edit particular record:
1) Create a template column and add this to the ItemTemplate:
<%# Html.ActionLink("Edit", "RadGridCommand", new { ControlID = MyGrid1.ID, CommandName = "Edit", CommandArgument = Container.ItemIndexHierarchical }) %>
2) Now handle this in your controller:
public ActionResult RadGridCommand(string ControlID, string CommandName, string CommandArgument)
{
ViewData["ControlID"] = ControlID;
ViewData["CommandName"]= CommandName;
ViewData["CommandArgument"] = CommandArgument;
return View("Index");
}
3) Override OnPreRender in inherited class and call explicitly the grid RaisePostBackEvent() method:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (ViewData["ControlID"] != null && ViewData["ControlID"].ToString() == ID &&
ViewData["CommandName"] != null)
{
RaisePostBackEvent(String.Format("FireCommand:{0};{1};{2}", MasterTableView.UniqueID, (string)ViewData["CommandName"], (string)ViewData["CommandArgument"]));
}
}
For other useful techniques please refer to the attached source code.
Enjoy!
[Download ]
Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Visual Studio To Include jQuery Library ... In a tip of its hand toward open source software development, Microsoft announced on Sunday that it will incorporate the jQuery JavaScript library into Microsoft Visual Studio and ASP.NET.... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| MS + jQuery: This Is Huge! ... Yesterday, the ASP.NET team announced that they were going to ship jQuery, a small, populate open source web client library. And not only is Microsoft going to ship this library, as is, but we're going to build support into Visual Studio for it, build future versions of our web components assuming it and support it via PSS like any other Microsoft product.
This is huge.
Of course, is it useful for developers using Microsoft tools, because they get another supported library out of the box for them... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Microsoft announces jQuery support in ASP.NET Ajax ... I just noticed a very interesting announcement by Scott Guthrie. Microsoft will officially start co-operating with jQuery development community, adding support for jquery in ASP.NET Ajax, and which also includes Microsoft PSS e.g they take support cases. Read more here . Share this post: email it! | bookmark it! | digg it! | reddit! | kick it! | live it! Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| TB.TreeGrid ... a asp.net webcontrol used to show hiberarchy data in grid view... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Define Maximum length to a TextBox ... This expression can be use to define the maximum length to a textBox.
U can change the maximum character by replacing the last numeric value that is 10 in my example.
Just change this number to your desired number like
^(.|\r|\n){1,10}$ : for max 10 character
^(.|\r|\n){1,20}$ : for max 20 character
Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Web-Application Framework - Catharsis - part III - Roles ... Catharsis web-app framework - role management... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| jQuery now officially part of the .NET developers toolbox ... You may have read that from John Resig or Scott Guthrie. Im 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 youll agree with me that it makes total sense. jQuery is a fantastic JavaScript library that focuses on DOM querying and manipulation, whereas the Microsoft Ajax Library focuses on building reusable components and interacting with ASP.NET web services.
A lot has been written... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Sitefinity Forums: Weekly Wrap-up (09/21/08 - 09/27/08) ... The Sitefinity forums are always full of great questions & answers from the community. Below are just a few of the helpful posts from this past week:
How do I setup a new RSS feed in Sitefinity?
Setting up a new RSS channel in Sitefinity is pretty easy, but how do you make use of it? Where is the RSS file? This forum post contains some good information about the steps needed to get up & running with a new RSS feed.
How do I access the contents of a RadEditor using Javascript?
Good information about manipulating the RadEditor on the client side. Thanks to SelArom for providing the answer on this.
When displaying comments, how do I access/display the comments ID?
A great question and some valuable information about how to alter Sitefinity ControlTemplates to display additional underlying resource details.
How do I quickly take a Sitefinity web site offline?
When doing maintenance or upgrades on a Sitefinity web site; this post shows how to quickly take Sitefinity temporarily offline.
Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Interop sessions at Oracle Open World ... Jesus and my collegue Kent Brown both spoke at Oracle Open World recently, on interop between WCF and WebLogic.
http://weblogs.asp.net/gsusx/archive/2008/09/19/speaking-at-oracle-open-world.aspx
But I found out after the fact! nice!
... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Using SyncToy v2.0 for Web Site Deployment ... As well as XCOPY deployment works, it requires that the user be reasonably comfortable using the command line. For users who prefer a GUI, Microsoft recently released a simple utility called SyncToy v2.0 which works well as an alternative to XCOPY or ROBOCOPY. This article covers the basics of obtaining, installing, and using this useful little tool.... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Advanced pager GridView of ASP.NET 2.0/3.5 ... Advanced pager GridView of ASP.NET 2.0/3.5... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Practical ASP.NET: Two Reasons You`re Not Using the Cache and How To Deal With Them ... Peter stumps for the Cache, despite developers' worries over stale or lost data.... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| ASP.NET.com Links |
| Upcoming Events - Richmond, Ruby DCamp and more ... The next couple of months are pretty busy for me. There are several items worth noting whether I'm speaking or just plain attending. This is a great season for community events and chances for continuous improvement.
Richmond Code Camp - October 4, 2008
This weekend, I'm going to be attending the Richmond Code Camp in Richmond, Virginia. I have the privilege of presenting "Approaching Functional Programming in C# or How I Lost the ForEach and Learned to Love LINQ" in which I discuss many of the topics around functional programming aspects while using C#. This discussion will include functional programming concepts, where C# fits, where it doesn't along with things you need to keep in mind. Amanda Laucher will also be in attendance presenting some functional programming concepts, so a good time will be had by all.
As part of the discussion, my sample code as always is available on MSDN Code Gallery at the Functional C# Project . I'll post my slides shortly after the discussion as well. Hope to see a great crowd there.
Ruby DCamp - October 11-12, 2008
Another great event coming to the Washington, DC area is Ruby DCamp. Up until very recently, many Ruby conferences have followed the traditional paid speaker and audience mold. Instead, this is an Open Spaces event for Rubyists from all areas to converge on our nation's capital to decide the agenda. I've found the Ruby community to be filled with some very bright people, especially in the Washington DC area with the DC Ruby Users Group (DCRUG) and Northern Virginia Ruby Users Group (NOVARUG) .
RubyDCamp will be held at the Holiday Inn in Arlington, VA. Best of all, it's metro accessible as well. Visit RubyDCamp.org for more details. Register today at Eventbrite !
KaizenConf - October 30 - November 2, 2008
The Continuous Improvement in Software Development Conference will be held at the end of October over Halloween and into early November. This looks to be a great event for sharing ideas on how we advance our craft through continuous improvement. I will be leading a workshop on Functional Programming Concepts and more in particular F#.
But, what is it all about anyways? Some of the questions that we need to consider are:
How do we improve?
How do we recognize new improvements?
What improvements in the past led us to where we are now?
How do we decide which improvements to make?
What values drive our decisions for improvement?
What improvements can we be making right now?
What obstructions impede improvement?
What improvements are on the horizon?
How can we adapt easier to the changes that improvements bring?
What are the practices and processes that enable improvement?
Getting to share ideas on continuous improvement are quite important to me, and getting to share them with the likes of Mary and Tom Poppendieck will be wonderful.
QCon San Francisco - November 19 - 21, 2008
The second annual San Francisco enterprise software development conference, QCon will be held in mid-November. The names of participants is literally a who's who in software development today. Names such as Martin Fowler , Kent Beck , Eric Evans , Erik Meijer , Don Syme , and even my CodeBetter compatriots Dave Laribee , Greg Young and Jeremy Miller fill the ranks. Tracks include Alternatives in the .NET Space (ALT.NET), Agile Development, Domain Driven Design, Functional Programming and more. Visit qconsf.com and register today!
var dzone_title = 'Upcoming Events - Richmond, Ruby DCamp and more';
var dzone_blurb = 'Upcoming Events - Richmond, Ruby DCamp and more';
var dzone_url = 'http://weblogs.asp.net/podwysocki/archive/2008/10/01/upcoming-events-richmond-ruby-dcamp-and-more.aspx';
var dzone_style = '1'; | Go |
| ASP.NET MVC Tip: Ajax and Validations using jQuery ... jQuery is now
part of the ASP.net development platform and it is going to ship with Visual
Studio in the future and will also be the part of ASP.NET MVC installation.
ASP.NET MVC will be the first product to include jQuery. Guru Gu’s blog
entry has the full details regarding this. This is a great decision from
Microsoft and I hope that the community would be happy about the great decision
taken by Microsoft. And this is another good step for web development after the
ASP.NET MVC technology. jQuery is an excellent java script library and very
popular among the web developers regardless of technology.
In this post, I
demonstrate how to integrate jQuery with ASP.NET MVC and will be explain how to
send Ajax
requests and also show client side validation using jQuery. I am using a blog
application for this demo and it will show how to post a comment of a blog
entry using Ajax
request and will also show partial rendering with the help of a user control.
The below is the class
diagram of the example I have used for this demo.
Controller
The below is the code of
BlogController. It has two action methods and first one is for getting the
single blog post including all comments and another action is for post a
comment for the particular blog post. I am going to call the AddComment method (
ActionName Post) using Ajax
request using jQuery.
public class BlogController
: Controller
{
private readonly ICommentRepository comments
= new CommentRepository ();
private readonly IPostRepository posts
= new PostRepository ();
[AcceptVerbs ( "GET" )]
public ActionResult
Post ( int id )
{ return View ( posts .Retrieve ().Where ( p => p .ID == id ).Single () );
}
[AcceptVerbs ( "POST" )]
[ActionName ( "Post" )]
public ActionResult
AddComment ( int
postId , string
commentAuthor , string commentText
)
{
var comment = new Comment {
PostID = postId , Author = commentAuthor ,
Text = commentText ,
DatePosted
= DateTime .Now
}; try
{
comments .Create ( comment );
return View ( "PostComment" , comment );
}
catch ( Exception ex )
{
throw ex ;
}
}
}
View
< asp : Content ID ="content"
ContentPlaceHolderID ="MainContent"
runat ="server">
< h2 > <% = Html .ActionLink ( ViewData .Model .Title , "Post" , new { id = ViewData .Model .ID } ) %> </ h2 >
< div > Posted by < strong > <% = ViewData .Model .Author %> </ strong > on < strong > <% = ViewData .Model .DatePosted %> </ strong ></ div >
< p > <% = ViewData .Model .Text .Replace ( "\n" , "<br
/>" ) %> </ p >
< h3 > Comments</ h3 >
< div id ="post_comment">
<% if ( ViewData .Model .Comments .Count > 0 ){ %> <% foreach ( var comment in ViewData .Model .Comments ){ %>
<% Html .RenderPartial ( "PostComment" , comment ); %>
<% } %>
<% } %>
</ div >
< form id ="new_comment" action ="/Blog/Post" method ="post"> < input type ="hidden"
name ="postId"
id ="postId"
value =" <%
=ViewData.Model.ID %> " />
< img id ="ajaxLoader"
src ="../../Content/ajax-loader.gif"/>
< fieldset >
< legend > Add Comment</ legend >
< ul >
< li >
< label for ="author">< span
class ="required"> Name:
</ span ></ label >
< input id ="commentAuthor"
class ="text
required" name ="commentAuthor" type ="text" value ="" />
</ li >
< li >
< label for ="text">< span class ="required"> Comment: </ span ></ label >
< textarea cols ="20" id ="c | Go |
| Good asp.net and other developer learning links & resources ... if you are a learning geek, then you will find this interesting. you can find lots of learning resource and links on this site. Link Namste !! | Go |
| Emulating Java Enums in .NET - F# Edition ... I'm not usually one to follow up replies from another's blog in my own, but some challenges need further analysis. Ayende posted earlier about emulating the behavior of Java Enums in .NET . Since the inception of C#, there has been a lot of back and forth between Java and C# in terms of features such as generics, attributes (annotations), foreach statements, and lastly enums. There are significant differences between the two, but let's see if we can bridge that gap.
Enter Java Enums
Previous to Java 5.0, Java had a standard way of delcaring an enumerated type as a constant. This was neither type safe, brittle and rather uninformative (what does 3 mean anyways?). Finally, come 5.0, this feature was added to have simple enums such as we've had in C# all along. But, unlike C#, these were not capable of being cast to an integer, unsigned or otherwise. A simple enum could look something like this. public enum PriorityLevel { Low, Medium, High }
Not only can they hold the value just as C/C++/C# enums can, they can also hold behavior and data. Let's expand our PriorityLevel to hold an integer level equivalent. public final enum PriorityLevel
{
Low("Low Priority" ),
Medium("Medium Priority" ),
High("High Priority" );
private static final Map<String,Status> lookup = getLookup();
private static HashMap<String, PriorityLevel> getLookup()
{
HashMap<String, PriorityLevel> l =
new HashMap<String,PriorityLevel>();
for (PriorityLevel p : EnumSet.allOf(PriorityLevel.class ))
l.put(p.getLevel(), p);
return l;
}
private String level;
private PriorityLevel(String level)
{
this .level = level;
}
public String getLevel() { return level; }
public static PriorityLevel get(String level)
{
return lookup.get(level);
}
}
This gives us the ability to define a string equivalent for our given enum value. This can be a powerful concept that the data is not just limited to integers. So, this had me thinking about the possibilities of this in .NET.
Enter C# 3.0 and Extension Methods
Given that the ability of the Java enum has the ability to map itself to another data type's equivalent quite easily, it was a matter of time before we tried something like that in C#. With the birth of extension methods, we have the ability to add features onto given types, such as enums. An example of taking the above example and using extension methods might look like this.
public enum PriorityLevel { Low, Medium, High } public static class Extensions { public static string GetLevel(this PriorityLevel level) { switch (level) { case PriorityLevel.High : return "High Priority" ; case PriorityLevel.Medium : return "Medium Priority" ; case PriorityLevel.Low : return "Low Priority" ; default : throw new NotSupportedException(); } } }
It's not the best solution, but it certainly works. Instead, let's look at another language, and yes, one that I've been talking a bit about recently in regards to F#.
Enter F#
When I was looking over Ayende's post, it struck me that people were using Java enums in such a way that it looked like discriminated unions. This is the ability to create a set of discriminators to use with pattern matching. Each discriminator may hold different data types as well, which makes them extra powerful. Let's look at an equivalent of the above examples in F#.
#light type PriorityLevel = | Low | Medium | High with member x. GetLevel( ) = match x with | Low -> "Low Priority" | Medium -> "Medium Priority" | High -> "High Priority"
This is just a simple example of being able to add on behaviors to our discriminated union. It could be expanded on to include more behaviors, but I think the point is well made.
The Challenge
Back to the challenge at hand, Ayende posted a quick code snippet of Java enum code that he wanted to transform into .NET. Let's first look at the Java code and then the F# code sample that I put as an equivalent. private | Go |
| Vlogging Web Development ... The web site I've been working on, Vloggerheads , will be opened to the public tomorrow. You can view the videos and blogs but you won't be able to comment or post videos unless you request membership and are approved. You might want to check out the video of the shrine that was built to me or the many videos thanking me for adding much needed features to the site. LOL
Vloggers make so many videos that it is not unusual for them to make a video about the site itself. I get a lot more feedback and appreciation for my work on this web site than I get on any other project. This alone makes it very worthwhile. If you are looking for recognition from users than you should definitely consider a video sharing site project.
I've added several features to this Ning site which everyone was used to having on YouTube or LiveVideo . Leaving comments on videos is an important aspect of the communication in the community so I added comment threading and comment replies. I also implemented email notification for comment replies. Working with the Ning platform is painfully difficult. Just sending an email proved to be a major hassle because Ning does not give me direct access to a member's email address. I have to use their built-in classes to send emails. And I cannot query for more than 100 content items at a time so I need to write a loop to get all the comments. Ning fights me every step of the way and frustrates me with its caching system and poor error reporting tools.
Ning is dropping the old version of the Dojo JavaScript library they were using and replacing it with jQuery. So I'm glad that ASP.NET will officially support jQuery as I'll be using it on all my projects. I've already included jQuery in my two remaining ASP.NET projects and I imported it into my Ning sites. I even use jQuery in my help files that I use for documentation.
I wrote some very complicated JavaScript to handle the comment pagination so I've been using every tool available to me to troubleshoot my JavaScript. Since the Ning platform caches JavaScript on the server side I've found it useful to load my recently changed scripts in Firebug to double check the version downloaded by Firefox. I've even resorted to using some console.log("string") lines in my code to avoid annoying alerts. My JavaScript is loading and manipulating XML so I've had to view my JavaScript objects in the DOM pane to carefully review available properties and methods. However, I haven't neglected the new debugging tools in Internet Explorer 8.0 Beta. I even have to use Opera to get an error message for a Dojo library error that won't show up in Firefox or Internet Explorer. I was uncertain as to what values the Ning platform was expecting for a POST request so I learned how to use Firebug to view what was being sent in a typical POST request.
During a recent Skype conference I was surprised to learn that both YouTube and LiveVideo were more disinterested in the vlogging community than I suspected. This surprises me because I think the social networking potential of vlogging is obvious. Vlogging is clearly more effective than blogging and other forms of text in fostering a genuine sense of online community. You can form real friendships through vlogging that would never take place among bloggers. Unfortunately, too many Web 2.0 entrepreneurs focus on valuations and numbers and neglect to consider the most important factor of business value, providing a service that meets real needs. You can never go wrong betting on a business that meets the needs of the general public. Vlogging clearly meets many crucial needs. It provides social interaction for the socially isolated. It provides recognition for creative people. It provides entertainment and communication that is more interactive than the mass media can offer. To dismiss vlogging as something that will never catch on with the general public is as stupid as it was two years ago to dismiss blogging as a fad. | Go |
| Book Review: slide:ology ... Amazon.com: slide:ology: The Art and Science of Creating Great Presentations: Nancy Duarte: Books ISBN : 0596522347 ISBN-13 : 9780596522346
I typically post reviews of books based on technology topics like .NET, LINQ, etc. but I thought this book would be a could fit for the site. This book is about creating effective PowerPoint slides which many technology professionals, like myself, do on a regular basis. On to the review... The author breaks up the book into multiple chapters but not your typically kind of chapters. These chapters are about the different parts that make up a slide; graphics, displaying data, diagrams, use of movement, etc. Each chapter is typically closed with a Case Study which demonstrates the use of the technic or recommend. This is done by showing a before and after presentation. The author also reinforces her points effectively by using graphics, colors and illustrations. The book is chock full of handy tips and suggestions that anyone can use to create dazzling and effective PowerPoint slides. If you present using PowerPoint, this is a must have. | Go |
| WCF .svc Gives HTTP 404 on Host, Works Perfectly on Local ... I was recently working on a project that used WCF web services extensively. Everything was ready for deployment, I deployed to the remote host, and voila – nothing works (nothing WCF related). After a LOT of frustration, I managed to make it work. I found two areas which were causing the problem:
1. The .svc extension was NOT setup right at our host. You can set this in the web.config webhandlers section for IIS 7, but not for IIS 6.0. I had IIS 7, but decided to bug my host to set up the extension on the server ;)
2. I had multiple host headers; i.e. my site worked for both http://mysite.com and http://www.mysite.com . To resolve this issue, you can either disable all but one if your host permits. Otherwise, you need to use a factory. Here’s an example of such a factory:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ServiceModel; using System.ServiceModel.Activation;
namespace Shipping.WebService { public class MultipleIISBindingSupportServiceHostFactory : ServiceHostFactory {
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) {
Uri[] requiredAddress = GetAppropriateBase(baseAddresses);
return base.CreateServiceHost(serviceType, requiredAddress);
}
Uri[] GetAppropriateBase(Uri[] baseAddresses) { List<Uri> retAddress = new List<Uri>(); retAddress.Add(baseAddresses[0]);
return retAddress.ToArray();
}
}
}
Granted, it can be way more efficient and you can do nifty tricks with the url to support both http:// and http://www , but I can happy to have just one for my webservice.
Next, you need to set the factory in the markup of the ,svc file. You can do it like this:
<%@ ServiceHost Language="C#" Debug="false" Factory="Shipping.WebService.MultipleIISBindingSupportServiceHostFactory" Service="Shipping.WebService.ClientService" CodeBehind="ClientService.svc.cs" %>
Hope that helps. | Go |
| Articulate '09 Product Launch ... The Articulate team has released its '09 product suite. Our team has grown quite a bit since our last releases. Congrats to everyone!
If you haven't seen Articulate's tools, check them out here:
http://www.articulate.com
We won a ton of awards with the last suite and this one blows the previous out of the water. Good times ahead. | Go |
| Our cries have finally been answered then? ... I for one am very happy that the next version of Visual Studio will finally embrace what some of us have been requesting for a long time now – UML adoption. A few months ago I mentioned some stuff that would be in the next version of VS and now that more has been going on I am thoroughly pleased.
For my part I've not really looked too much into what's going on with the class diagrams etc and whether or not we will be graced with the standard l&f for UML diagrams. I for one hope that this does happen.
This is way overdue and both Eclipse and Netbeans have UML incorporated into them to a certain degree. Netbeans has pretty good UML support right now in fact. Of course the great thing about the addition of these UML features is that we will be able to get a more abstract view of our code and the way various components work with one another by reverse engineering it. Maybe this might not seem so helpful now, but when you revisit old code or encounter code that isn't yours it will be.
I know that the VS team have had a tonne of stuff to do but why have we had to wait so long for tools which are pretty much essential? We've been palmed off to use things like Visio or fork out the big bucks for more comprehensive software.
Well, at least the wheels are finally in motion. Hip hip ;-)
Before I go be sure to check out Channel9 this week for more insight on what's coming up in VS2010. I briefly watched a video today just to get the gist of what has been added since I last looked and it was pretty decent.
Originally posted at http://msmvps.com/blogs/gbarnett . Please post all comments there. Thanks, Granville. | Go |
| How To Have a Successful .NET Developer Interview ... I have been through a number of interviews now in my career and I have fared pretty well in many of them. While going through the interviews, I have created a mental list of what has worked well and what made a good impression on those conducting the interview. I have also made note of what impresses me (or turns me off) when I am the one conducting an interview. Here are my top tips for success during your .NET developer interview. [Read Full Post] | Go |