현재 단일보기에서 여러 라디오 버튼 세트를 사용하는 MVC 응용 프로그램에서 작업하고 있습니다.단일보기에서 RadioButton을 그룹화하고 양식 데이터를 올바르게 게시하기
보기를 다시 게시 할 때 컨트롤러의 포스트 백 메서드가 각 라디오 단추 그룹에 대해 선택된 옵션을 전달할 수 있도록 폼 데이터를 자동으로 구문 분석하고 입력해야합니다.
모델
public class SurveyViewModel {
public List<SurveyQuestion> Questions { get; set; }
}
public class SurveyQuestion
{
public string Question { get; set; }
public IEnumerable<SelectListItem> Options { get; set; }
public int Answer { get; set; }
}
public class Option
{
public int Value { get; set; }
public string Text { get; set; }
}
컨트롤러
public ActionResult Survey()
{
List<string> questions = new List<string> { "Question 1", "Question 2", "Question 3" };
SurveyViewModel model = new SurveyViewModel {
Questions = new List<SurveyQuestion>()
};
foreach (string question in questions)
{
List<Option> list = new List<Option>();
list.Add(new Option() { Value = 1, Text = "Answer 1" });
list.Add(new Option() { Value = 2, Text = "Answer 2" });
list.Add(new Option() { Value = 3, Text = "Answer 3" });
SelectList sl = new SelectList(list, "Value", "Text");
model.Questions.Add(new SurveyQuestion {
Question = question,
Answer = 1, // TODO: Get this from DB
Options = sl
});
}
return View(model);
}
보기
: 여기 는 점을 설명하기 위해 몇 가지 예제 코드 우리가 표준 MVC (아무 확장)을 고수한다면@foreach (SurveyQuestion question in Model.Questions)
{
<p>@question.Question</p>
@Html.RadioButtonForSelectList(m => question.Answer, question.Options)
}
도우미
http://jonlanceley.blogspot.co.uk/2011/06/mvc3-radiobuttonlist-helper.html
에서, Html.RadioButtonFor
도우미 [0] 옵션의 명명 규칙을 반복 그룹을 라디오 버튼 출력 끝, 옵션 [1], 옵션 [2] 등.
이렇게하면 모든 그룹의 첫 번째 옵션이 그룹화되고, 두 번째 옵션이 그룹화됩니다.
또 다른 방법은 컨트롤러의 포스트 백 작업에서 현재 요청 양식 데이터를 검사하고 수동으로 구문 분석하는 것입니다.하지만 입력 데이터를 입력 된 매개 변수로 자동 변환하는 MVC의 기능을 활용하기를 원했습니다. 이걸 직접해라.
는 제대로 컬렉션의 각 항목을 결합하기 위해 올바른 마크 업을 쓸 수 없습니다 모델 바인더로 컬렉션에 대한foreach
루프를 사용하지 마십시오 당신의 도움이
Brilliant! 그것은 긴 두통, 고마워 치료! – ComethTheNerd
긴 두통을 고치는 것이 기쁘다;) –