наличие 2 пользовательских связующих моделей на одном объекте - PullRequest
1 голос
/ 16 апреля 2011

У меня есть пользовательская папка на контракт, которая проверяет, может ли мой зарегистрированный пользователь просматривать этот контракт и существует ли контракт.Я хотел бы иметь другой механизм связывания, который проверяет, существует ли контракт и является ли токен действительным, поскольку пользователю не требуется входить в систему.

Возможно ли иметь два средства связывания для одного и того же объекта?Как мне это сделать?

1 Ответ

2 голосов
/ 16 апреля 2011

ОБНОВЛЕНИЕ:

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

У вас в основном есть два варианта, один из которых - создать одно большое связующее для модели (я думаю, что это лучший вариант).

другой вариант заключается в создании поставщика связывателей моделей, который возвращает связыватель моделей для конкретных нужд.

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());

Я бы дважды подумал о наличии логики авторизации в связывателе модели.

...