Don’t do iisreset do …

a mini batch file in your start menu, when you're debugging the application startup of a .Net application, and keep wanting to restart it:

taskkill /im aspnet_wp.exe /f
if not errorlevel == 0 pause

or

taskkill /im w3wp.exe /f
if not errorlevel == 0 pause

which does the job much faster.

Assuming, of course, that your reason for wanting to do an iis reset was to force a .Net application restart. And you don't mind forcing all running .Net applications to restart. And you're not on a busy production machine at rushhour.

Why are my TFS local folder paths ridiculously long?

Well, without actually answering the question (oh, okay then - it's because they usually match the branch and directory path in TFS of course, but you knew that anyway) what you really wanted to know was how to fix it.

Easy. You want to play with the rows in File - Source Control - Workspaces - Edit...

Specifically, instead of one row listing the TeamProject root like this:

Source ControlFolder Local Folder
$/MyTeamProject C:\MyLocalWorkspaceRoot\

You want several rows, one for each solution you are currently working on, listing the actual solution file directories in TFS that you personally work with, and the - much shorter - local path you want to check out in:

Source ControlFolder Local Folder
$/MyTeamProject/Path/To/BranchXX/SolutionAA/ C:\MyLocalWorkspaceRoot\XX-AA
$/MyTeamProject/Path/To/BranchYY/SolutionBB/ C:\MyLocalWorkspaceRoot\YY-BB

Now you get just the files you want, without clicking through 10 levels of empty directories.

Workspace 101. Martin Woodward

Asp.Net Required Field Validator for a DropDownList

A required field seems a bit odd for a dropdown list because it's got a value whether you like it or not. But when you feel that your dropdown list should have a required value it's usually because, you've given it an initial value of "--please select--" or somesuch and you want to validate that a 'real' value has been chosen.

Easy. Set the InitialValue property:

<asp:requiredfieldvalidator ControlToValidate="ddlMyPickList" 
    Text="*" InitialValue="-1"
    ErrorMessage="You must choose a value"
    runat="server" ID="rfvDdlMyPickList"/>

Specifically, set it to the Value (not the Text) of the 'please select' item you added.

Prevent an Asp.Net Button from triggering a Postback

Sometimes, you want an Asp.net Button to not trigger a postback.

One solution is, don't use an asp.net button, use an html input or link tag instead. However, you may want to use an asp:XXXButton for consistency with the rest of your page; or it may seem a simple way to make the text on the button localisable (although you can equally achieve that on a plain old html control if you give it an id, a runat="server" and probably a meta:resourcekey); or you may have other stuff you want to do with it serverside.

To stop an asp.net button causing a postback, do it like this:

<asp:LinkButton id="btnX" OnClientClick="return false;" runat="server" />

The more likely scenarios is, that you want to run clientside javascript. In that case, put ";return false;" after your javascript call:

<asp:LinkButton id="btnX" OnClientClick="functionToCall();return false;" runat="server"/>