开发者

What's a good way to mimic Web Forms RadioButtonList in ASP.NET MVC?

I have View Model List like this:

public class PersonViewModel
{
  int PersonId
  bool LikesIceCream
}

The View will display a list of people and their preference to ice cream - like it or don't.

I'm not sure how to construct the html in开发者_高级运维 a way that I can use the RadioButtonFor HTML helper and properly pass the values back to the controller. Simply creating RadioButtonFor's in a foreach loop doesn't help because they will have the same name. Any idea how I can hook these values up with the model binder?

Thanks.


View model:

public class PersonViewModel
{
    public int PersonId { get; set; }
    public bool LikesIceCream { get; set; }
}

Controller:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new[]
        {
            new PersonViewModel { PersonId = 1, LikesIceCream = true },
            new PersonViewModel { PersonId = 2, LikesIceCream = false },
            new PersonViewModel { PersonId = 3, LikesIceCream = true },
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<PersonViewModel> model)
    {
        // you will get what you need here inside the model
        return View(model);
    }
}

View (~/Views/Home/Index.cshtml):

@model IEnumerable<PersonViewModel>

@using (Html.BeginForm())
{
    @Html.EditorForModel()
    <input type="submit" value="OK" />
}

Editor template (~/Views/Home/EditorTemplates/PersonViewModel.cshtml):

@model PersonViewModel

<div>
    @Html.HiddenFor(x => x.PersonId)
    @Html.RadioButtonFor(x => x.LikesIceCream, "true") Yes
    @Html.RadioButtonFor(x => x.LikesIceCream, "false") No
</div>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜