The problem is that MVC doesn't know how to convert your Id to ObjectId type. It only sees it as string.
You'll have to use a custom binder for your method. Have a look at this link http://www.dotnetcurry.com/ShowArticle.aspx?ID=584
Have a look at this
public class MovieModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var modelBinder = new DefaultModelBinder();
var movie = modelBinder.BindModel(controllerContext, bindingContext) as Movie;
var id = controllerContext.HttpContext.Request.Form["Id"];
if (movie != null)
{
movie.Id = new ObjectId(id);
return movie ;
}
return null;
}
}
And change your Update method as so
public ActionResult Update([ModelBinder(typeof(MovieModelBinder))] Movie movie)