简体   繁体   English

无法将RadioButton组的选定值传递给控制器

[英]Unable to pass RadioButton group selected value to Controller

I have a ViewModel defined as: 我有一个ViewModel定义为:

    public class Fixtures
    {
        public int Id { get; set; }
        public string HomeTeam { get; set; }
        public string AwayTeam { get; set; }
        public string HomeTeamCode { get; set; }
        public string AwayTeamCode { get; set; }
        public string League { get; set; }
        public bool Home { get; set; }
        public bool Draw { get; set; }
        public bool Away { get; set; }
        public string FixturePrediction { get; set; }
    }

My view displays a list of these fixtures and for each fixture, I have a radio button grouping. 我的视图显示了这些灯具的列表,对于每个灯具,我都有一个单选按钮分组。 I need some way of passing the selected radio button for each fixture to my Post method. 我需要某种方式将每个灯具的选定单选按钮传递给我的Post方法。 My View and controller are as below: 我的视图和控制器如下:

View: 视图:

<div class="container">
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        for (int i = 0; i < Model.Count(); i++)
        {
            @Html.HiddenFor(model => model[i].Id)

            <div class="col-sm-6">
                <div class="panel panel-primary panel-fixture">
                    <div class="panel-heading text-center fixturetitle">
                        @Html.DisplayFor(model => model[i].HomeTeam) v @Html.DisplayFor(model => model[i].AwayTeam)
                        @Html.HiddenFor(model => model[i].HomeTeam)
                        @Html.HiddenFor(model => model[i].AwayTeam)
                    </div>
                    <div class="panel-body">
                        <div class="container-fluid">
                            <div class="row">
                                <div class="col-xs-4 text-center">
                                    <img src="~/Content/Images/@string.Concat(Model[i].HomeTeamCode, ".png")" class="fixturecrest" />
                                    <div class="text-center">
                                        @Html.DisplayFor(model => model[i].HomeTeamCode)
                                        @Html.HiddenFor(model => model[i].HomeTeamCode)
                                    </div>
                                </div>
                                <div class="col-xs-4 text-center">
                                    <label class="text-center">
                                        V <br />
                                    </label>
                                </div>
                                <div class="col-xs-4 text-center">
                                    <img src="~/Content/Images/@string.Concat(Model[i].AwayTeamCode, ".png")" class="fixturecrest" />
                                    <div class="text-center">
                                        @Html.DisplayFor(model => model[i].AwayTeamCode)
                                        @Html.HiddenFor(model => model[i].AwayTeamCode)
                                    </div>
                                </div>
                            </div>
                            <hr />
                            <div class="row">
                                <div class="text-center" role="group" aria-label="Fixture Prediction">
                                    <div class="col-xs-4 text-center">
                                        <button type="button" class="btn btn-xs btn-default">
                                            HOME
                                            @Html.RadioButtonFor(model => model[i].FixturePrediction, Model[i].Home, new { @Name = Model[i].Id })
                                            @Html.HiddenFor(model => model[i].FixturePrediction)
                                            <span class="glyphicon glyphicon-check"></span>
                                        </button>
                                    </div>
                                    <div class="col-xs-4 text-center">
                                        <button type="button" class="btn btn-xs btn-default">
                                            DRAW
                                            @Html.RadioButtonFor(model => model[i].FixturePrediction, Model[i].Draw, new { @Name = Model[i].Id })
                                            @Html.HiddenFor(model => model[i].FixturePrediction)
                                            <span class="glyphicon glyphicon-check"></span>
                                        </button>
                                    </div>
                                    <div class="col-xs-4 text-center">
                                        <button type="button" class="btn btn-xs btn-default">
                                            AWAY
                                            @Html.RadioButtonFor(model => model[i].FixturePrediction, Model[i].Away, new { @Name = Model[i].Id })
                                            @Html.HiddenFor(model => model[i].FixturePrediction)
                                            <span class="glyphicon glyphicon-check"></span>
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        }
        <input type="submit" value="Confirm Predictions" class="btn btn-success" />
    }
</div>

Post Method in Controller: 控制器中的发布方法:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Test(IEnumerable<Fixtures> test)
{
    if (ModelState.IsValid)
    {

    }

    return RedirectToAction("Test");
}

My field FixturePrediction is always null and I have attempted several variations of the 'radiobuttonfor' shown above. 我的字段FixturePrediction始终为null,我尝试了上面显示的“ radiobuttonfor”的几种变体。

All I need is to assign a value to FixturePrediction based on which radiobutton is selected. 我需要做的就是根据选择的FixturePrediction按钮为FixturePrediction分配一个值。 What am I missing? 我想念什么?

Thanks in advance. 提前致谢。

I think what you are trying to do is this, I am not sure why you are doing it the way you are doing it, but this is how you would implement Html.RadioButtonFor , it takes the model prop, and the value, you can add as many buttons as you want, and the selected radio value will be passed as the value for your model prop 我认为您正在尝试执行的操作是这样,我不确定您为什么要按自己的方式执行操作 ,但这就是实现Html.RadioButtonFor的方式 ,它需要模型prop和值,您可以添加任意数量的按钮,所选的单选值将作为模型道具的值传递

@Html.RadioButtonFor(model => model[i].FixturePrediction, "Home")
 @Html.RadioButtonFor(model => model[i].FixturePrediction, "Draw")
 @Html.RadioButtonFor(model => model[i].FixturePrediction, "Away")

Another example 另一个例子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM