2011-02-19 2 views
0

을받을 수 그리고 메타 데이터이지만, 포함 된 Model, 또는 더 구체적으로 이름으로 전달 된 특정 형제 멤버 (속성)의 값에 액세스하려면 어쨌든 존재합니까?나는 나는 다음과 같은 서명하는 HTML 도우미를 MVC2 HTML에서 속성의 포함 된 모델 도우미

건배, 마태 복음

편집 : OK 나는 (? 당신이 어를보기 전에 가끔 물어 걸립니다) 나는 ModelMetadata.FromStringExpression 방법을 사용하여이 작업을 수행 할 수 있다고 생각하지만, 나는이 정도 갈 수있는 가장 좋은 방법입니다 이?

답변

1

형제 멤버의 값에 액세스해야하는 경우 뷰 모델에이 형제 멤버가 있다고 가정합니다. 이것은 당신의 html 도우미가 더 이상 generic 일 필요가 없다는 것을 의미합니다. 당신은이 작업을 수행 할 수 있습니다 : 좋은

public static MvcHtmlString UiAutoCompleteForWithId<TModel, TProperty>(
    this HtmlHelper<TModel> helper, 
    Expression<Func<TModel, TProperty>> expression, 
    object htmlAttributes 
) where TModel: ISomeInterface 
{ 
    ISomeInterface model = helper.ViewData.Model; 
    var value = model.SomeOtherSiblingProperty; 
    // TODO: do something with this property 
    ... 
} 
+0

아 :

또는 뷰 모델은 문제의 형제 멤버를 포함 몇 가지 일반적인 기본 인터페이스를 구현하는 경우 제네릭 제약 조건을 지정할 수 있습니다

. ModelMetadata.FromStringExpression을 사용하여 끝났지 만 효과가 있지만 더 깨끗하게 보입니다. 나는 그런 생각을하지 않기 때문에 약간 바보 같다고 느낍니다. –

관련 문제