2010-01-13 2 views
0

기본 컨트롤러 클래스에서 사용되는 복잡한 ViewModel 객체가 있습니다. 단순화를 위해 그것은 다음과 같습니다TryUpdateModel()처럼 접두사 참조 문자열이있는 하위 객체 식별

public class FruitBowl 
{ 
    public Apple[] apples; 
    public Banana[] bananas; 
} 

public class Apple 
{ 
    public string appleType; 
} 

을 지금, 나는이 TryUpdateModel(myFruitBowlObj, "apples[0]")라고하면, 모델 바인더는 POST 데이터에서 업데이트해야 배열의 첫 번째 사과 것을 식별합니다. 또는 양식 필드의 이름이 "apples [0] .appleType"이라는 스키마로 지정된 컨트롤러에 POST 데이터를 입력하고 TryUpdateModel(myFruitBowlObj)을 호출하면 첫 번째 사과를 올바르게 업데이트합니다.

내 질문은 - 접두사 문자열 "apple [0]"이 주어지면 myFruitBowlObj에서 apple [0]에 대한 참조를 얻는 가장 쉬운 방법은 무엇입니까? 내가 어떻게 TryUpdateModel() 그것을 수행 할 수 있지만 복잡하고 많은 보호 된 방법을 사용합니다. 내가 간과하고있는 어딘가에 접근 할 수있는 모델 바인딩 논리가 있습니까? 아니면 리플렉션을 통해 수동으로해야합니까?

답변

1

수동으로 리플렉션을 사용하는 것이 가장 좋습니다.

나는 이전에 모델 바인더에서 조각을 찢어 버리려고했는데 항상 "좋아, 이제 내가 필요해, 좋아, 이제는 내가 필요해, 좋아, 이제 이걸 필요해."그리고 나는 거대한 리핑을 끝내었다. 몇 가지 수동 리플렉션 방법으로 내 문제를 해결하기 전에 MVC 소스에서 덩어리.

+0

나는 똑같은 결론을 내리고있다. – womp