установить переменные в приложении MVC? - PullRequest
1 голос
/ 20 ноября 2011

Я пытаюсь узнать о приложении Orchard MVC. Я вижу следующий код, но не могу понять, что он делает. Может кто-нибудь объяснить, что это:

User.As<UserPart>().Record.UserName = value;

означает?

 public class UserEditViewModel  {
    [Required]
    public string UserName {
        get { return User.As<UserPart>().Record.UserName; }
        set { User.As<UserPart>().Record.UserName = value; }
    }

    [Required]
    public string Email {
        get { return User.As<UserPart>().Record.Email; }
        set { User.As<UserPart>().Record.Email = value; }
    }

    public IContent User { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 20 ноября 2011

Не зная источника, похоже, что вызов As<type>() эквивалентен obj as type

т.е. в данном случае объект приводится как тип type - UserPart. Таким образом, User определяется как IContent, но в этом случае предполагается, что класс, реализующий этот интерфейс, имеет тип UserPart и может быть безопасно преобразован в этот тип.

Итак, User.As<UserPart>() возвращает объект типа UserPart, который предположительно имеет свойство Record.

Мне кажется странным, потому что зачем абстрагировать интерфейс IContent, если вы привязываете реализацию к типу UserPart, но опять же, я не знаю код, и он вполне может иметь смысл в более широком контексте .

edit: я говорю, связывая реализацию, потому что предположительно User.As<UserPart>() может вернуть ноль, если базовый класс не типа UserPart, и для этого нет проверки.

0 голосов
/ 20 ноября 2011

Похоже, эта модель просмотра используется для редактирования сведений о пользователях, вошедших в систему.

1-я часть

User.As<UserPart>().Record.UserName = value;

равна User.As<UserPart>() -и мне кажется, что объект C # типа UserPart создается статическим вызовом метода в классе User, и этот объект, вероятно, содержит сведения о зарегистрированных пользователях.Я подозреваю, что он обращается к свойству Request HttpContext.Current или ControllerContext, чтобы узнать, кто является текущим пользователем, и получить его данные.После того, как он извлек объект UserPart, представляющий текущего зарегистрированного пользователя, .Record.UserName = value просто устанавливает входящее значение для объекта.

value является неявным аргументом во всех методах набора в C #.

Сеттеры ViewModel обычно вызываются при привязке модели во время привязки модели в Запросе непосредственно перед действием actioninvoking.И геттеры обычно вызываются при рендеринге представления.

Если вам все еще трудно понять, посмотрите на Документацию по орхидеям или на Исходный код сам

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