ОБНОВЛЕНИЕ:
Я проверил источник, у которого не может быть двух пользовательских подшивок моделей для одного типа. Я запутался с поставщиками стоимости.
У вас в основном есть два варианта, один из которых - создать одно большое связующее для модели (я думаю, что это лучший вариант).
другой вариант заключается в создании поставщика связывателей моделей, который возвращает связыватель моделей для конкретных нужд.
public class ContractModelBinderProvider : IModelBinderProvider
{
public IModelBinder GetBinder(Type modelType)
{
if(modelType == typeof(Contract))
{
if(LoggedIn)
{
return new LoggedInContractBinder();
}
else
{
return new NotLoggedContractBinder();
}
}
return null;
}
}
тогда вам нужно зарегистрировать его в вашем контейнере DependencyResolver / IOC или добавить это (в Global.asax - запуск приложения):
ModelBinderProviders.BinderProviders.Add(new ContractModelBinderProvider());
Я бы дважды подумал о наличии логики авторизации в связывателе модели.