2014-01-20 1 views
0

나는 radiobuttonitems의 동적 목록을 전달하고 다른 모델 정보와 함께 선택한 라디오 버튼을 가져와야합니다.모델에서 선택한 라디오 버튼을 어떻게 되돌릴 수 있습니까?

public class MyItem 
{ 
    public int Id { get; set; } 
    public String Name { get; set; } 
    public bool Selected { get; set; } 
} 
public class MyFormModel 
{ 
    public List<MyItem> RadioItems; 
    public String SomeQuestion; 
    public String SelectedButton { get; set; } 
    public String Answer { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var items = new List<MyItem>(); 
     items.Add(new MyItem() { Id = 1, Name = "Male", Selected = true }); 
     items.Add(new MyItem() { Id = 2, Name = "Female", Selected = false }); 
     var m = new MyFormModel(); 
     m.RadioItems = items; 
     m.SomeQuestion = "What's your favorite color?"; 
     return View(m); 
    } 

    [HttpPost] 
    public ActionResult Index(MyFormModel model) 
    { 
     Console.WriteLine(model.Answer); //works 
     Console.WriteLine(model.SelectedButton); //does not work 
     return null; 
    } 

보기

@model WebApplication1.Controllers.MyFormModel 
@using (Html.BeginForm("Index", "Home", new {ReturnUrl = ViewBag.ReturnUrl}, FormMethod.Post, new {@class = "form-horizontal", role = "form"})) 
{ 
    foreach (var r in Model.RadioItems) 
    { 
     @Html.RadioButton("MyGroup",r.Id,r.Selected) @Html.Label(r.Name)<br/> 
    } 
    @Html.Label(Model.SomeQuestion) @Html.TextBoxFor(m=>m.Answer) 
    <input id="Submit1" type="submit" value="submit" /> 
} 

내가 내가 선택한 라디오 버튼을 확인할 수 있습니다 포스트 백에 너무 그렇게해야합니까? 간단한 무언가가 빠져 있어야합니다.

답변

1

귀하의 모델은 뷰 일치해야하므로

@Html.RadioButton("SelectedButton",r.Id,r.Selected) 

에보기를 변경하거나 모델에

public string MyGroup {get;set;} 

를 추가하거나.

0

"선택"라디오 버튼을 Html Helper에서 모델에 지정합니다.

@Html.RadioButtonFor(model => model.SelectedButton, "false") 
+0

사용자가 버튼을 변경할 수 있습니다. 포스트 백에서 그 값을 가져와야합니다. – WhiskerBiscuit

+0

@WhiskerBiscuit 예. 값이 게시 시점에 무엇이든 관계없이 모델에 저장됩니다. – ganders

관련 문제