jvance.com

.net, c#, asp.net, linq, htpc, woodworking

Jarrett's Tech Blog - Browsing MVC

  1. AtomSite 0.9 Released, Mix09, MVC Final

    Today is a great day for me.  ASP.NET MVC 1.0 Final was released today at Mix09. I finally released AtomSite 0.9 on CodePlex to coincide with the new framework.  I can finally get some sleep.  However, there is still tons of documentation that needs to be created/updated for this release.

    I can't do this project alone.  If you'd like to help create plug-ins, documentation, or themes, let me know so I can add you to the development team.

    Also, AtomSite has a new website to go along with it's new name.

    Finally, the keynote for Mix09 was streamed live today and there are some great things coming out of Microsoft.  Silverlight 3.0 looks very promising.  I encourage you to watch the video.

    Posted by Jarrett on March 19 at 12:23 AM

  2. AtomSite 0.9 Nearly Ready

    BlogSvcToAtomSite  I'm excited about the next release of BlogSvc, which going forward will have the new name of AtomSite.  I have put my architect hat on to design and build a plugin/widget system.  Along the way I've learned how to build an extremely modular web application based on the ideas pioneered by Louis DeJardin of the Spark engine.  We do not (yet) use the Spark view engine.  However, it does support it.

    The plug-in model supports:

    • Installation
      • Drop in bin folder
      • Supports extracting embedded theme/script files to correct folders
    • Register Additional View Engines
    • Registering Routes
      • Supports collection constraints
      • Support for multiple workspaces (areas)
      • Support for secure routes (https)
    • Dynamic Controllers
    • Services
      • Supports cross-service events via singletons
    • Widgets
      • Supports both composite and simple view type widgets
      • Supports three different scopes, Service, Workspace, Collection
      • Widget can register stylesheet dependency link
      • Widget can register javascript dependency link
      • Widget can include in-line script at bottom of page
      • Widget can have nested widgets
      • Widgets can be cached (with proper authorization support)
      • Planned support for script/style compression and consolidation planned
      • Planned support for drag drop widget management planned
    • Themes
      • Revised to use YUI layout grids to support dynamic templates
      • Side bar can be moved to either side
      • Supports multiple fixed-widths and fluid layout
    • Metadata
      • Data could be used to install, register, uninstall
      • Planned support for plug-in admin pages
      • Planned support to submit to a global plug-in registry
    • Merits
      • Supports order in which plug-in is activated
      • Supports overwriting previous plug-in routes

     

    All of this is nearly ready for the next release.  If testing goes well, you can expect a release this weekend.

    Posted by Jarrett on March 09 at 4:05 PM

  3. Update to ASP.NET MVC RC1

    I've checked in the code to update BlogSvc to ASP.NET MVC RC1 Refresh.  There were only minor updates to get things workings and the overall process only took around 10 minutes.  However, the readme notes on the configuration are misleading.  The release notes tell you to update the pages section to look like:

    <pages

    validateRequest="false"

    pageParserFilterType = " System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "

    pageBaseType = " System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 "

    userControlBaseType = " System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 " >

    This is not necessary as you'll notice when creating a new MVC project that three bolded lines are not included.  When I added the lines to my config it caused errors on my hosting provider.

    Posted by Jarrett, Jarrett on January 31 at 12:05 AM

  4. New BlogSvc Release and Oxite

    oxciteblogsvc

    Wow, I believe I'm all caught upontherecent hypearoundOxite. Although I can't help but feel a bit left out in the cold.  I mean BlogSvc has been on codeplex much longer than oxite and it never received this much attention.  It is a shame because I believe the newest release, BlogSvc 0.8 Wizard Release is solid example of how to build a content management solution using MVC.

    I know BlogSvc doesn't yet have all the fancy administration pages or widgets/plugins yet, but we have a solid foundation to get there.  I wish we could bring all the developers together on one solution so we build the next WordPress on ASP.NET MVC. Perhaps combine the best of BlogSvc, BlogEngine.net, dasBlog, SubText all into one super solution and call it SuperPressTM.

    </rant>

    Posted by Jarrett on December 24 at 10:20 AM

  5. ASP.Net MVC Beta Crashing IIS7

    With the new beta release of the MVC framework, I updated BlogSvc to compile and run with the new dlls that are now in the GAC.  After deleting from the gac and finally copying the dlls to my bin folder I things running smoothly from within Visual Studio.  However, when I deploy to IIS7, I am getting a crash.

    AspNetMvcBetaIis7Crash

    I’ve tried cleaning out all the applications in my IIS and also restarted the AppDomains, sites, servers.  I’ve also tried rebooting.  Anyone have any idea’s?  Does the beta run on your IIS7 in Vista?

    I’ve asked this question on StackOverflow: Why is Asp.net MVC Beta crashing my IIS7?

    Update: I toggled data execution preventions (DEP) and a couple a reboots later and the issue cleared up.

    Posted by Jarrett on October 16 at 5:33 PM

  6. Deploy MVC Application

    I previously thought Visual Studio.NET only supported automatically deploying “Web Site” projects but it also works with “Web Application” and “MVC” projects. Right-click on your project and choose publish.

     PublishWeb

    After choosing publish it will upload all the files based on your “Copy” choice.  You can watch the output window to track the progress:

    ------ Publish started: Project: WebMvc, Configuration: Debug Any CPU ------
    Connecting to ftp://ftp.atomserver.net/wwwroot/...
    Deleting existing files...
    Publishing folder /...
    Publishing folder App_Data...
    Publishing folder App_Data/www...
    Publishing folder App_Data/www/blog...
    Publishing folder App_Data/www/blog/WelcomeToBlogService06...
    Publishing folder App_Data/www/media...
    Publishing folder App_Data/www/pages...
    Publishing folder js...
    Publishing folder themes...
    Publishing folder themes/default...
    Publishing folder themes/default/images...
    Publishing folder bin...
    ========== Build: 5 succeeded or up-to-date, 0 failed, 0 skipped ==========
    ========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
    Posted by Jarrett on October 15 at 7:17 PM

  7. Using the New DateTime Support in .NET 3.5 via MVC & jQuery

    I've added New Global Date and Time Support  to BlogSvc by utilizing the new expanded support for date times with proper time zone support.  Some highlights in the MSDN documentation:

    The DateTimeOffset structure represents a date and time value, together with an offset that indicates how much that value differs from UTC. Thus, the value always unambiguously identifies a single point in time. A DateTimeOffset value is not tied to a particular time zone, but can originate from any of a variety of time zones. The TimeZoneInfo class makes it possible to work with dates and times so that any date and time value unambiguously identifies a single point in time. Taking advantage of time zone support in the .NET Framework is possible only if the time zone to which a date and time value belongs is known when that date and time object is instantiated.

    So the MSDN documentation is not clear on which class can make a date/time unambiguous.  However, the last sentence is the best clue.  We must capture both the UTC value and an originating time zone.

    For an ASP.NET MVC application we can add configuration to associate all date/times to our preferred time zone. 

    TimeZoneSettings

    With this configuration, we can now write an HtmlHelper extension to display a DateTimeOffset in our preferred time zone.

    DateTimeAbbrHelper

    Call the extension method and pass it either a DateTimeOffset or a DateTime

    .AbbrUsage

    This will result in the follwing html:

    <abbr title='Tuesday, October 07, 2008 10:01 PM (GMT-06:00) Central Time (US &amp; Canada)'>10/7/2008 10:01 PM - CST</abbr>
    

    This gives an abbreviated date/time display at your preferred time zone.

    However, you may want to display time relative to the user browsing your website. There are two ways to accomplish this:

    • Ask and store each user's time zone
    • Automatically determine user's time zone using javascript

    The first option is commonly used with forums and requires the user to register and choose their preferred time zone. The second option makes much more sense for content websites (such as a blog) since it can occur automatically without registration.

    There is already a great plugin for jQuery that can display fuzzy times that are directly relative to the user.  It is called the Time Ago Plugin.  To use it, lets create another helper extension that utilizes a micro-format:

    TimeAgoAbbrHelper

    This creates abbreviations in the html, that when activated through jQuery show times that will be automatically updated even after the user has loaded the page.

    TimeAgoDisplay

    This DateTime display is much more recognizable and personable to the casual user.

    Head on over to the BlogSvc website to download the code.

    Update: here is a bonus function that will allow you to format the date (with access to the time zone information) anyway you'd like.

    DateTimeAbbrHelperBonus

     

    Call it like

    :DateTimeAbbrHelperBonusCall

    Posted by Jarrett on October 09 at 2:24 AM

  8. MVC is Cool

    image I've recently spent many late nights learning (by implementation) ASP.NET MVC and I'm very pleased with the new framework.  The old web forms model of programming was great for quick and dirty web apps but it really took too much control away from those developers who have a deep understanding of web technology. With MVC, it really lets web developers go back to their roots.  For example, you are no longer dealing with “asp” controls but directly with the classic html input controls.

     

    As part of my learning process, I converted BlogService over to Preview 5 release.  The conversion went smoothly.  For me, there was only a small learning curve as I’ve been tracking in MVC for a long time.  It is a quite popular topic right now especially with the announcement of jQuery being included out of the box with .NET.  How great!

     

    Check out the latest release of BlogSvc to see the code: BlogService MVC Release 0.6

    Posted by Jarrett on October 06 at 9:44 PM

© Copyright 2010 Powered by AtomSite 1.4.0.0