ASP.net MVC v2 - отладка проблем привязки модели - ошибка?

У меня больше, чем небольшая трудность, пытаясь отладить, почему MVC не связывается правильно в данном случае, который я имею

По сути, у меня есть действие, которое получает сложный объект, который, в свою очередь, имеет сложный дочерний объект - Activity.Location.State (где Activity - сложный объект, который ожидает действие, Location - сложный дочерний объект, а State - просто строка) ,

Теперь я настроил тестовый проект, который, насколько я могу точно сказать, имитирует реальный сценарий, который у меня есть, в этом тестовом случае привязка работает ... Но в моем собственном проекте привязка к Activity работает, но не к Location ... Помещая точки останова в свойстве Locaiton, я могу сказать, что MVC извлекает сложный объект Location из Activity, но не устанавливает никаких свойств ...

Я пытаюсь отладить проблему, но мне нужен доступ к символам MVC v2 preview 2, которые я не могу отследить ... Я хотел бы увидеть, что он на самом деле делает, когда вытаскивает объект местоположения (для некоторых причина, я думаю, что это может быть внутренняя ошибка, но проглатывание исключения).

Любые идеи о том, что я мог бы сделать здесь ...

Ура Энтони

ОБНОВИТЬ:

Хорошо, я сделал то, что J.W. предложил и прямо ссылаться на проект MVC ...

Я обнаружил проблему, и было одно очень маленькое различие, которое я упустил из виду ... В результате я обнаружил, что MVC в настоящее время не поддерживает множественные уровни наследования INTERFACE, когда речь идет о привязке модели ... См. Следующее ...

//MODEL
public class Location : ILocation
{
    ...
}

public interface ILocation : ILocationCore
{
    ...
}

public interface ILocationCore    //In my sample I didn't have this second level interface
{
    ...
    //MVC doesn't find any of these properties
    ...
}


public class Activity : IActivity
{
    ...
}

public interface IActivity : IActivityCore
{
    ILocation Location { get; set; }   //MVC finds this and reads its meta type as an ILocation
    //Also the implementation of this Location within Activity will always return a instance - our IoC takes care of that, so MVC should never have to create the instance
}

public interface IActivityCore
{
    ...
}

//CONTROLLER
public ActionResult Create(Activity activity)
{
}

Следовательно, я обнаружил, что MVC находит Location и считывает его метатип как ILocation, но когда GetModelProperties запускается в DefaultModelBinder, происходит следующее:

    protected virtual PropertyDescriptorCollection GetModelProperties(ControllerContext controllerContext, ModelBindingContext bindingContext) {
        return GetTypeDescriptor(controllerContext, bindingContext).GetProperties();
        //This return no properties
    }

    protected virtual ICustomTypeDescriptor GetTypeDescriptor(ControllerContext controllerContext, ModelBindingContext bindingContext) {
        return new AssociatedMetadataTypeTypeDescriptionProvider(bindingContext.ModelType).GetTypeDescriptor(bindingContext.ModelType);
        //bindingContext.ModelType - is ILocation
    }

Следовательно, на данный момент я предполагаю, что TypeDescriptionProvider не поддерживает этот стиль наследования, что меня весьма удивляет. Также, глядя на исходный код v1, похоже, что он был представлен с v2 - но v1, возможно, не смог поддержать то, что я пытаюсь сделать в любом случае.

Я бы не сказал, что это действительно ошибка, но я попытался заменить свои интерфейсы конкретными классами, и это работало нормально. Следовательно, поведение не совсем то, что я ожидал, и немного противоречиво.

Есть идеи??? Я бы подумал, что это наследие не является достаточно стандартным, но будет происходить достаточно часто, чтобы обслужить. Спасибо за ответ.

ура

Ответы на вопрос(2)

Ваш ответ на вопрос