What's the difference between these 2 methods?
Html.ActionLink(string linkText, string actionName, object routeValues, object htmlAttributes)
Html.ActionLink(string linkText, string actionName, RouteValueDictionary routeValues, IDictionary htmlAttributes)
Yes, they have the same number of parameters. Yes, they even have the same parameter names. So in essence the intent of calling either of these methods is to build up a link with the passed in route values and HTML attributes. Yet the difference between these 2 methods couldn't be more pronounced.
Take this line of code:
@Html.ActionLink("Back to List", "Index", TempData["SavedRouteValues"], null)
What I wanted was an easy way to retain the settings of a Telerik ASP.NET MVC Grid and build up a link to bring me back to the correct state. This line of code does that. However, it generates a link similar to this (word-wrapped here for clarity):
To fix this, just use this code (a simple typecast) to force the correct overloaded method to be picked:
@Html.ActionLink("Back to List", "Index", (RouteValueDictionary)TempData["SavedRouteValues"], null)
The moral of the story? If you're an API desiger, don't make overloaded methods lightly. Make sure they add value and distinction. A strong type vs. an object reference doesn't pass that test. If you do violate that rule, however, then at least be sure that the overload fulfills the intent and implied contract of that method.
My company's core applications are written in ASP.NET MVC, and have been well received
I came across MonoTouch
, and I really like how it will enable reuse of my hard work over the years. The main obstacle for me was how to get the data out to my iPhone client. I wasn't exactly thrilled with the idea of shoe-horning WCF access from the iPhone, and working with WCF at my day job is a configuration nightmare. REST would be good, but I wasn't happy with the options out there - until I found ServiceStack
. I don't know why this thing doesn't get more publicity. It is everything I want: small, fast, actively developed, easy to configure, JSON, REST, DTOs, and works easily with MonoTouch. Well done, guys.
The first snag I hit getting some demo code out there was that if you want to have the client code exist on MonoTouch, be sure to add references to the assemblies found in the MonoTouch-v2.20.zip file on github
. I'm curious why this is still labelled as 2.20, and why those assemblies are still dated from June 9, 2011, but for now, things are moving along to convert my ASP.NET MVC application to use services, and expose those services for use on my iPhone client.
Look for more posts about ServiceStack and MonoTouch in the near future.
I've read enough horror stories about upgrading Snow Leopard to Lion causing corruption of the Windows 7 partition, and I didn't want to be yet another casualty. So I took the time to research how best to backup in order to prepare myself in case something went wrong.
I started by cloning the Mac OSX partition to an external USB drive using Carbon Copy Cloner
. This was drop dead simple, and worked well. There's a complete writeup of this here
I couldn't get the Mac Disk Utility to clone the bootcamp partition. It would error out with an "Invalid Argument" message. I found a version of WinClone 2.3.2
, but that also gave me errors. I finally got it to work by unchecking all of the options in the Preferences window, thanks to comments in this article
. I also made sure the USB partition that I was backing up to was set to Mac OS Extended (Journaled). After that, it was a painless clone process.
The actual Lion upgrade went smooth. I didn't lose anything, and everything just worked. One quick note is that you might want to save a backup of the Lion installer if you have multiple Macs that you'll be upgrading. Details on how to do that can be found here
Off to install MonoTouch for iOS
I've had a web application written using iUI
for a couple of years now. It's been stable and rock solid, and I really appreciate the leg up that it gave me. However, this weekend I converted away from iUI to jQueryMobile
. I have another application in production already using jQueryMobile, and it is absolutely an amazing library.
The reasons I went with this move were:
- iOS 5 had substantial changes to Safari and my existing application is broken in many places. Instead of spending time debugging
and fixing something 2 years old, I figured I'd take the time to port to jQueryMobile.
- I've had to leave iUI at version 0.31 for this entire 2 year period. When they started development on the 0.4 version, they changed form submissions to break if you had multiple form fields with the same name. I absolutely had to have this capability in order to support ASP.NET MVC list binding. I reported the issue in the forums, and it didn't get much attention. Sure, it's open source, but if I have to chase down bug fixing in a framework I'm not intimately familiar with, it's a negative.
- There is no easy way with the released version of iUI to do things like jQuery calls, hook events into the page create/show and hide/destroy. Sure, there are code modifications you can find on the web, but it's a forking nightmare and tough to maintain (is this for 0.31, 0.4, or 0.5? does it require other extensions or modifications? etc.).
- From a non-technical perspective, the roadmap of iUI has been all over the place. I can't remember for sure, but I think it was originally slated for moving 0.4 in to release status in like June of 2009. It's been pushed out over and over again, trimmed in scope, and there just doesn't seem to be traction or consensus to move the product forward. In contrast, jQueryMobile is looking to have a 1.0 release in the next few weeks with constant releases over the past few months.
Take a look at the StackOverflow ad
for more details. We're hiring 2 Senior developers and 2 Junior developers (and more: QA, BA, and a GUI developer). It's a fun environment with a strong technical team, so we're looking to keep the team strong. If you're around the Milwaukee area and are interested in more details, let me know.
I've been searching for a comprehensive online backup solution
for quite some time. I want to follow the sage wisdom I heard from Alex Lindsay about the 3-2-1 backup rule
. With Windows Home Server, I had finally got all of my computers backing up automatically, and it has actually aided in one restore of a dead hard drive. But not having an offsite backup has gnawed at me for a while. What if someone steals my computer stuff from my house? Fire? Tornado? All of those backups are useless in those cases.
I looked at Carbonite and Mozy, but they both refuse to backup WHS. This is imperative to me because I store my media (pictures, videos, musics, etc.) on a share on my WHS device. Having to store those files locally just to please a backup service was not appealing to me. Amazon S3 was going to be too expensive. Other options seemed immature. So I waited. And I waited.
Along came CrashPlan
. They embrace WHS
. They support Mac and Windows. They have an iPhone app (and Android) to check on things on the go. There are a ton of other features that make this an attractive offering (multiple backup destinations, secure, unlimited storage, etc.). Finally, it is dirt cheap. I have all of the computers in my house automatically backing up to the cloud for just $6 a month. It's nice to see that a company understands that homes have networks, and doesn't lump them into an enterprise-grade price.
If you're not backing up to the cloud, I highly recommend giving CrashPlan a try. If they had a referral program, I'd probably be able to retire because I'd be pumping them up at every turn! :)
[I have not been contacted by, compensated by, or otherwise asked to post this. I'm just reporting my satisfaction with a service that I've been looking for since 2009.]
At work here, we use generated files with partial classes to get us through the tedium of creating mundane classes. It works well enough, but one of my biggest complaints about this is that if you then need to do a Find in Files, you get hundreds, or maybe thousands, of extra hits when searching for something that would be found inside those generated files.
Today I came across the free tool Ultra Find
in the Extensions gallery. It does exactly what I want, namely, lets me focus on the search results that aren't in the generated files.
Thanks, Logan. Very useful!