As many of you are probably well aware, we failed to ship the recently open-sourced Microsoft ASP.NET MVC with Mono 2.4.2. The release was soon followed by an update, 2.4.2.1, which included the source of MVC but, unfortunately, the story doesn't end here.
Sometime during MVC integration process, we discovered our C# compiler had a bug which made certain parts of MVC behave incorrectly. The bug was quickly fixed in trunk, but it was determined that backporting it to the 2.4 branches was not an option and since the issue was easily worked around, we decided to just put the modified MVC code in our repositories. Unfortunately, due to my mistake, the workaround didn't actually make it in neither 2.4.2.1 or 2.4.2.2 releases. I have just committed the 2-line fix (revisions r138087 and r138088) to the 2.4 branches and we should expect to see 2.4.2.3 released soon. My apologies for this omission to everybody who expected to see the bug fixed in 2.4.2.2.
If your MVC application throws an exception similar to this one:
System.ArgumentNullException: Argument cannot be null.
Parameter name: type
at System.ComponentModel.TypeDescriptor.GetConverter (System.Type type) [0x000ab] in /usr/src/tmp/mono-branch/mcs/class/System/System.ComponentModel/TypeDescriptor.cs:437
at System.Web.Mvc.DefaultModelBinder.BindModel (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ModelBindingContext bindingContext) [0x000ba] in /usr/src/tmp/mono-branch/mcs/class/System.Web.Mvc/System.Web.Mvc/DefaultModelBinder.cs:186
at System.Web.Mvc.ControllerActionInvoker.GetParameterValue (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ParameterDescriptor parameterDescriptor) [0x00090] in /usr/src/tmp/mono-branch/mcs/class/System.Web.Mvc/System.Web.Mvc/ControllerActionInvoker.cs:119
at System.Web.Mvc.ControllerActionInvoker.GetParameterValues (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionDescriptor actionDescriptor) [0x00021] in /usr/src/tmp/mono-branch/mcs/class/System.Web.Mvc/System.Web.Mvc/ControllerActionInvoker.cs:128
at System.Web.Mvc.ControllerActionInvoker.InvokeAction (System.Web.Mvc.ControllerContext controllerContext, System.String actionName) [0x00099] in /usr/src/tmp/mono-branch/mcs/class/System.Web.Mvc/System.Web.Mvc/ControllerActionInvoker.cs:162
then you are hit by the bug. At this point you have three choices:
ASP.NET MVC sources in the Mono 2.4 and 2.4.2 branches are identical to the upstream source except for the workaround. Trunk version of ASP.NET MVC is identical to upstream.