This blog has, IMO, some great resources. Unfortunately, some of those resources are becoming less relevant. I'm still blogging, learning tech and helping others...please find me at my new home on http://www.jameschambers.com/.

Tuesday, March 9, 2010

Visual Studio 2010 Wishlist: Augmenting ASP.NET and the IDE

At the time of this post I am using Visual Studio 2010 RC.

Today I am just putting down some ideas that I think are just little nice-to-haves, but from a user experience point of view are also a little frustrating because they (the VS team) are so close yet didn’t quite get it.

I want to be clear: when I say “get it” I am referring to the very small portions of features specific to my rant today. If you’re not using VS2010 – even in it’s RC release – and you’re a developer on the Microsoft stack you’re either crazy or suppressed by your employer. I’ll assume you’re not crazy and send my apologies to your employer.

Visual Studio 2010 is the most significant release from the developer product group of folks in Redmond since the release of the original Visual Studio .NET environment. For which, by the way, I still have my t-shirt from the release event in Calgary. ;o)

I’ve posted some thoughts on VS2010 before, mostly found here.

MVC Awareness in ASPX Sources

Okay, so we’ve got this awesome new Swiss Army Knife toolkit and framework that allows us to feel like web ninjas: ASP.NET MVC. Sure, the MVC bits have been kerplunking around for a couple of years, but there is a cycle that tools and patterns follow and we’re just getting to the height of the tool chain now.

Why, though, when I set a form action to an MVC controller method do I get file not found errors?

image

Here’s what we know:

  • the text is being evaluated
  • the engine supporting the code editor is aware of MVC libraries
  • the page we’re working on is inherited from an MVC ViewPage

So why do I see this:

image

…instead of, say, allowing me to right-click and go to the method? All I’m saying is that if you’re evaluating a form action on an MVC page it’s likely that it’s going to an action on an MVC controller. At least, it could be an action on a controller, so why not check for it? (…and let me go to the definition!).

I know that we have Html.BeginForm and, yes, that does make the warning message go away, but that’s not strongly-typed either and, in most cases, I’m not sure there are benefits of using Html.BeginForm over the specified HTML.

Better “Intentional” Tab Arrangement

I love how the tabs and code editor (and designers, and database query results, etc.) have evolved in Visual Studio. In a multi-monitor work environment it is uber-cool to be able to partition my work space the way I like to.

Side bar: my new dream setup is 3x24” monitors vertical with the ATI Eyefinity hardware for development. I would also keep my “top” monitor setup for my “overhead” view of things (docs, email, pings, utils, etc). This would allow some insane productivity. I digress.

While I have applauded the IDE team for the close-tab-button integrated into the tab/name area already, the new tab behaviour is also one of my pet peeves.

image

Some things I like about it:

  • The ‘x’ to allow me to close the tab without switching to it
  • The ability to drag and partition my workspace into whatever arrangement I like
  • The ability to rearrange tabs in one visual partition or to drag to other partitions

Some things I don’t like:

  • Double-clicking breaks the tab out into a window…I don’t mind this per se, and imagine some like it, but I’d like to be able to turn this off
  • Accidentally dragging the tab slightly when trying to switch to it (even a pixel) will break out the tab into a window. I would prefer a buffer of, say, 3-5 pixels so that the action was more intentional.

I tend to work with two or three partitions and I arrange them in the same way. I am very intentional about this. For example, in my three partition setup, I work with CSS and JavaScript in one work area, ASPX pages and controllers in the second and repositories and other model-related classes in a third.

That said, here is something I wish the IDE did:

  • When I double-click a file in Solution Explorer, and I have multiple work areas open, I would like a way to say which area to send the file to. There would be a number of ways to do this (and here are the first three that come to mind):
    • When CTRL is pressed and a file is double-clicked, put a “ghost” of the file on the cursor and let me click an area.
    • When I hold CTRL and drag a file to an area, open the file there instead of creating a link or giving me an error
    • When I right-click a file, give me a “Send To…” option and let me pick the area (even via simple overlay or something).

Cross-file Script Awareness

There is a cool trick you can use to make use of the VSDOC files that are available for various JavaScript libraries, such as jQuery. It goes something like this:

image

You can also use this trick in your ASCX files which don’t pick up script references in your Site.Master.

This is a good work-around. But it’s not a feature.

I don’t know what the right answer is here as there are a lot of things to consider. Should an ASCX always be aware of it’s context? Should it be written for a specific context? Should it ensure, itself, that scripts will be available to it? Or, in the context of an in-department or in-house application, can’t we assume it will be in the confines of it’s project?

Maybe you could come up with a way to say, “Controls in this directory are aware of these scripts (or stylesheets, etc.)”. Perhaps that would get through this one.

Or, perhaps, this is just an area where the patterns, tools and languages don’t and won’t fit together nicely.

No comments:

Post a Comment