I’ll be spending the next two days at a Agile Open Northwest. If you’re at the conference, come find me. :)
Otherwise I’ll be blogging about anything I find especially insightful.
I’ll be spending the next two days at a Agile Open Northwest. If you’re at the conference, come find me. :)
Otherwise I’ll be blogging about anything I find especially insightful.
I’ve spent most of the past couple of days mapping a legacy database with NHibernate. Here’s how the design of this database probably went down:
Pointy Haired Boss: We’ve decided to cut costs by paying you per primary key instead of per hour.
DBA: Works for me.
Seriously. We have tables here with two varchars, one decimal, and one int ALL mapped to a primary key. So glad that I have NH to help me out here.
Simple enough, it looks like some standards nazi went through and renamed the Login to Logon in several places for RC1. Unfortunately it did not get renamed in the Web.config for the redirect on failed login url.
<authentication mode="Forms">
<forms loginUrl="~/Account/Login"/>
</authentication>
Where it needs to be:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"/>
</authentication>
But when I went to the asp.net forums to report this bug, I did the conscientious thing and tried to determine if it had been reported already. Searching for “RC1 logon login” yielded too many results. So I’ll wade through the tree view to only check the asp.net mvc forum. (2004 called, wants it back.) I then realized it was sorting by some kind of relavance instead of date. Where’s the date sort? Lets try going back to the “more search options” Ohh, thanks for clearing my existing search. Perhaps if I hit “back” instead? Still no luck. Ohh wait, there’s a big notice at the top of the search page:
Search will be undergoing maintenance to improve results on Tuesday, January 6, 2009 from 7pm – 10pm Eastern Time, United States.
Ohh. So this is the IMPROVED version? Sigh. I’ll post it here instead.
Sometimes using a stock photo can help sell your product. Perhaps this one is trying to convince the buyer what not to do. Or something.

This took me forever to find online, so I’m posting it here for the next helpless soul. If you need to round datetimes coming out of sql to the nearest 5 minutes, here you go.
dateadd(mi,(datepart(mi,dateadd(mi,1,DateTimeColumn))/5)*5,dateadd(hh,datediff(hh,0,dateadd(mi,1, DateTimeColumn)),0))
If you want to hear random drivel about my life, I’ve started a personal blog over at willshaver.com. I will continue to use this one for software related posts.
I’ve been beating my head against the UI helpers a lot lately and wanted to share a frustration point. Say I want to do something using the DropDownList, so you map a property on your page that returns a Select List:
<%= Html.DropDownList("db", SelectList)%>
public static SelectList SelectList
{
get
{
List<ListItem> items = new List<ListItem>
{
new ListItem {Selected = true, Text = "All", Value = ""},
new ListItem {Text = "Apples", Value = "Ap"},
new ListItem {Text = "Bananas", Value = "Bn"},
new ListItem {Text = "Oranges", Value = "Or"}
};
return new SelectList(items);
}
}
Seems simple enough right? I’m giving the select list a list of ListItem. I’m using YOUR api. I don’t expect that THIS is what I get back:

Looks like you’re assuming that I won’t use your list of items:
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Operation performs conversions and returns a unique instance on each call.")]
public virtual IList<ListItem> GetListItems() {
return (!String.IsNullOrEmpty(DataValueField)) ?
GetListItemsWithValueField() :
GetListItemsWithoutValueField();
}
Perhaps a check to see if the items in the enumerable ARE already LISTITEM would be appropriate?
For the record, changing it to this makes the code work:
return new SelectList(items, "Value", "Text", items[0]);
But what happened to convention over configuration?
Edit: ok, the “correct” way I posted wasn’t actually correct. You can’t put the “Selected” item in the selectedValue field, you have to put the value there, in this case “Bn” or “Ap” etc. Heaven forbit putting the actual selected item as the parameter. Or pulling the selected item automatically from request values.
JQuery In Action:
347 Pages, not a single mention of the queue() method.
To be fair, they do mention “mainaining state”. (sic)
ICANN RFC for anything.* domain names. Might want to take a look. Most of you readers play in this here internets thing, this could effect you or the company you work for. :)
For future reference for myself and others:
1. CustomModelBinderAttribute -> GetBinder()
2. IModelBinder -> BindModel()
3. ActionFilterAttribute -> OnActionExecuting()
4. ActionFilterAttribute -> OnActionExecuted()
5. ActionFilterAttribute -> OnResultExecuting()
6. ActionFilterAttribute -> OnResultExecuted()
(As of Beta 1)
Powered by WordPress