2011-11-20 3 views
1

나는 오차드 MVC 응용 프로그램에 대해 배우려고합니다. 나는 다음 코드를 보지만 그것이 무엇을 하는지를 이해할 수 없다. 누군가가 이것을 설명 할 수 있습니까?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

아마 제네릭에 대해 읽어야합니다. – SLaks

+0

MVC와 새로운 CMS 앱을 배우는 가장 좋은 방법은 컨트롤의 흐름을 이해하기 위해 코드의 적절한 위치에 중단 점을 배치하고 콜 스택 (또는 스택 추적)을 살펴 보는 것입니다. 그리고 CMS 소스 자체를 살펴보십시오. – Zasz

답변

0

As<type>()에 대한 호출이 obj as type

에 해당 같은 개체가되고 캐스트가있다, 즉 소스 모르고, 그것은 본다 이 경우에는 유형 type - UserPart입니다. 따라서 UserIContent으로 정의되지만이 경우 해당 인터페이스를 구현하는 클래스는 UserPart 유형이며 해당 유형으로 안전하게 변환 될 수 있다고 가정합니다.

따라서 User.As<UserPart>()UserPart 유형의 객체를 반환하며이 객체의 속성은 아마도 Record입니다.

구현을 UserPart 유형으로 묶는 경우 왜 IContent 인터페이스를 추상화했는지 알 수는 없지만 코드를 알지 못해 더 큰 맥락에서 이해할 수 있습니다.

편집 : 아마도 User.As<UserPart>()가 null 반환 할 수 있기 때문에 기본이되는 클래스 유형 UserPart하지 경우 내가 구현을 묶는 말, 어떤 검사가 거기에 없다.

+0

... 아마도 그렇지 않습니다. :) –

0

이 viewmodel은 현재 로그인 된 사용자 세부 정보를 편집하는 데 사용됩니다.

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

의 첫번째 부분은 User.As<UserPart>() - 그리고이 사용자 클래스의 정적 메소드 호출에 의해 생성되는 유형 UserPart의 C#을 객체처럼 나에게보고, 개체가 아마도 포함 사용자 세부 정보를 기록했습니다. 나는 그것이 HttpContext.Current 또는 ControllerContext의 Request 속성에 액세스하여 누가 현재 사용자인지 알 수 있고 그의 세부 사항을 가져 오는 것으로 생각됩니다. 현재 로그인 한 사용자를 나타내는 UserPart 개체를 가져 오면 .Record.UserName = value은 개체에 들어오는 값을 설정합니다.

value은 C#의 모든 설정 메서드에서 암시적인 인수입니다.

ViewModel의 setter는 일반적으로 actioninvoking 직전에 요청의 모델 바인딩 중에 모델을 바인딩 할 때 호출됩니다. getter는 보통 뷰를 렌더링 할 때 호출됩니다.

당신은 여전히 ​​어려운 Orchid Documentation이나 Source Code 자체에 모양을 이해하는 찾아내는 경우에

관련 문제