2009-04-28 2 views
3

롤과는 다음과 같은 예를 상상이 더 나은 내가 적절한 modelbinding 이전 시도 그래서더 복잡한 (실제) 모델 바인딩? 나와 함께

Public ViewResult GiveMeFruit(Person person, IFruit fruit){ 
    person.Fruits.Add(fruit); 
    ViewData.Person = person; 
    View(ViewData); 
} 

같은 수행해야

Public ViewResult GiveMeFruit(int personId, string personName, int personAge, int fruitId){ 
    Person person = PersonService.GetPerson(personId); 
    person.Name = personName; 
    person.Age = age; 
    person.Fruits.Add(FruitService.GetFruit(fruitId)); 
    ViewData.Person = person; 
    View(ViewData); 
} 

을하지만 난 그게 제대로 작동 가져올 수 없습니다. 모든 예제는 하나의 극히 단순한 유형으로 작동하는 방식을 보여 주며 다중 복합 유형으로는 작동하지 않습니다. modelbinder는 어떤 유형을위한 필드가 무엇인지 알고 있습니까? 과일 1과 과일 2가 있다면 어떨까요? 바인더는 IFruit 인터페이스에 사용할 구체적인 유형을 어떻게 알 수 있습니까? 또한 사람에게 IEnumerable 과일을주고 싶다면 어떻게 작동하는지 궁금합니다.

+0

바보 같은 곳으로 가자. 그것은 단지 모델 일뿐입니다 .. –

답변

3

가 나는 같이 가야한다고 생각 :

<input type="text" name="person.Name" value="" /> 
<input type="text" name="person.Age" value="" /> 
<input type="text" name="fruit.Property1" value="" /> 
<input type="text" name="fruit.Property2" value="" /> 

컬렉션의 경우 :

<input type="text" name="fruit[0].Property1" value="" /> 
<input type="text" name="fruit[0].Property2" value="" /> 
<input type="text" name="fruit[1].Property1" value="" /> 
<input type="text" name="fruit[1].Property2" value="" /> 

this question에서처럼.

+0

IList는 어떻습니까 ? –

+0

제 편집을 참조하십시오. –

+0

이 경우에는 매개 변수에 Bind 접두어가 붙지 않아야합니까? 아니면 내가 놓친 또 다른 대회 일까? –