Quando você precisa ter um parâmetro do tipo Guid em suas ações, é necessária a criação de um fichário de modelo customizado.
Este é meu modelBinder personalizado:
public class GuidModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var parameter = bindingContext
.ValueProvider
.GetValue(bindingContext.ModelName);
return Guid.Parse(parameter.AttemptedValue);
}
}
Agora, precisamos registrar nosso modelBinder personalizado na inicialização do seu aplicativo. Podemos torná-lo assim:
ModelBinders.Binders.Add(typeof(Guid), new GuidModelBinder());
Portanto, nossa ação se parece com isto:
public ActionResult Details(Guid id)
{
return View(id);
}
Pronto! Agora tudo funciona como esperado.