2016-10-20 4 views
1

온라인 테스트 응용 프로그램을 작성한다고 가정 해보십시오. 객관식 시험 문제를 추가 할 수 있습니다. 그래서 사용자가 "Add new test question"을 클릭하면 대화 상자가 나타납니다. 대화 상자는 질문 텍스트, 가능한 대답 목록 및 정답을 묻습니다. 이렇게하면 다음과 같은 결과가 나타납니다.웹 API 매개 변수는 동적으로 만들어진 테이블 값을 모델링하여 바인딩합니까?

Which color has the letter "G" in it? 
      A. Blue 
      B. Red 
    ----> C. Green 
      D. Yellow 
      E. Purple 

새 질문마다 옵션 수가 다를 수 있습니다. 그래서 다음 질문은 할 수 있습니다

나는 사용자가 동적으로 그 질문을 구축 할 수있는 대화 상자를 만든
Does NYC have 5 boroughs? 
    ---> A. Yes 
      B. No 

형태의 내부 (정확한 등을 지정, 답변을 추가). 폼 제출시 해당 구조를 완벽하게 매개 변수로 매개 변수화 할 모델 및 웹 API를 만들 수 있습니까? 내 양식에 내 모델의 배열에 어떻게 든 바인딩 할 수있는 테이블이있는 것처럼 나는 미친 듯이 생각하고 있었습니까? 아마도 그런 식으로 작동하지는 않지만 창의적인 아이디어를 찾고있을 것입니다.

답변

0

모델 테스트를 형성하기 위해 이들의 컬렉션을 걸릴 것이

public class Question { 
    public string Text { get; set;} 
    public IList<Answer> Answers { get; set;} 
} 

public class Answer { 
    public string Label { get; set;} 
    public string Text { get; set;} 
    public bool IsCorrect { get; set;} 
} 

하는 API 엔드 포인트 같은 것을 볼 수 있었다.

public class Test { 
    public IList<Question> Questions { get; set; } 
} 

public class TestController : ApiController { 
    [HttpPost] 
    public IHttpActionResult Create(Test test) { ... } 
} 
+0

응답 해 주셔서 감사합니다. 제 질문은 모델 구조 자체보다 폼 제출에 관한 것입니다. Web API에는 매개 변수 바인딩이 있다는 것을 알고 있습니다. 기본적으로 웹 양식의 필드에 이름 속성이 있고 name 속성 값이 서버 측 모델 필드 이름과 일치하면 웹 API는 양식 요소 값을 서버 측 모델 값에 자동으로 매핑합니다. 정적 양식 필드에 효과적입니다. 그러나이 예에서 응답 요소는 동적으로 생성되고 숫자가 다양합니다. 제출시 동적으로 생성 된 양식 필드를 모델에 어떻게 매핑합니까? – Robert

+0

컬렉션을 배열 또는 컬렉션으로 제출하면 ModelBinder가이를 변환합니다. – Nkosi