微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将表单数据传递回控制器

如何解决将表单数据传递回控制器

| 我遇到一个参数无法从表单数据获取值的问题。它在列表中显示正确的项目数(即,如果用户选择5个选项,则列表包含5个项目),但所有值均为零。下面是我的HTML视图:
    @using (Html.BeginForm())
    {
       @Html.HiddenFor(s => s.soWId)

        foreach (LabelTable.Domain.Entities.Option option in ViewBag.Options)
        {

        <div class=\"wizard-section\" id=@option.Level>
        @Html.RadioButton(\"[\"+(option.Level-1)+\"].OptionId\",option.OptionId) @option.OptionName
        </div>
        }
        <div class=\"buttons\">
        <input type=\"submit\",value=\"Continue\",class=\"button\"/>
        </div>      
    }
这是我的控制器方法
    [HttpPost]
    public ViewResult Wizard(StatementOfWork SOW,List<int> OptionIds)
    {
        //do something
    }
发布后,OptionIds包含以下内容: [0] = 0 [1] = 0 [2] = 0 等等... 我要尝试做的是创建一个表单,向用户提供一些选项供您选择(此表单是向导的一部分)。 有5个级别(或更多)的选项。表单的所有数据都通过ViewBag.Options发送到视图。除级别1以外,所有级别均被隐藏。在级别1上进行选择时,将显示一个级别,依此类推。该表单仅回发通过每个级别选择的选项。最初,我是通过将多个回发到服务器来完成此操作的,但我不喜欢这样做(很多往返) 我计划将每个级别中选择的选项添加到我从向导的各个视图传递的SOW模型中。

解决方法

您的View代码有些混乱,但是据我了解,您希望ModelBinder在发布时将单选按钮值绑定到
OptionIds
列表。在这种情况下,您的单选按钮的名称应为
OptionIds[0]
OptionIds[1]
等。因此,我再次不确定
Level
属性是什么,但是我假设您想要这样的东西:
@Html.RadioButton(\"OptionIds[\"+(option.Level-1)+\"]\",option.OptionId)
,尝试更换:
  @Html.RadioButton(\"[\"+(option.Level-1)+\"].OptionId\",option.OptionId)
与:
  @Html.RadioButton(\"[\"+(option.Level-1)+\"]\",option.OptionId)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。