繁体   English   中英

ASP.NET MVC仅将单选按钮输入之一传递给控制器

[英]ASP.NET MVC Only One of the RadioButton Input is Passed to Controller

我是NET MVC的新手,我尝试开发一个应用程序,让用户回答几个问题,

我有以下与我的问题有关的模型

  • 选择(包括问题ID作为FK)

和一个ViewModel

public class QuestionChoiceViewModel
{
    public Question Question { get; set; }
    public IEnumerable<Choice> Choices { get; set; }
}

在我看来,我想将所有问题及其响应选项显示为单选按钮,因此我在“选择/索引”视图中有以下几行。

@model IEnumerable<WebApplication.Models.QuestionChoiceViewModel>


@using (Html.BeginForm("Index", "Choices", FormMethod.Post)) 
{
    @Html.AntiForgeryToken()
     <div class="form-horizontal">
        @foreach (var q in Model){
            @:<b>Question:</b>

            @Html.DisplayFor(modelItem => q.Question.questionText)
            <form class="form-group"> 
            @foreach(var c in q.Choices){
                <input type="radio" name="@c.choiceText" value="@c.choiceID" />
                 @c.choiceText 
                <br />
            }
            </form>
            <br />
        }

         <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="button" value="Back" class="btn btn-default" id="btnBack" />
                <input type="submit" name="btnSubmit" value="Submit" class="btn btn-default" />
            </div>
        </div>
    </div>
}

我显示并可以从多个问题中选择一个而没有问题。

对于代码的最终示例,请参见我的控制器仅将FormCollection类型用作参数

public ActionResult Index(FormCollection form) 

问题:当我调试并查看形式-besides Token等时-是仅第一个单选按钮组的值。 可以说我有10个问题,但我在控制器中通过的内容是第一个问题中选择的内容。 我做错了什么?

另外,非常欢迎收到关于我的风格的任何提示,谢谢!

乍看之下,似乎有两件事不对:

  • 内部表单标签<form class="form-group">不必是表单,嵌套表单可能会引起问题。
  • 单选输入的name属性用于将它们分组在一起,因此对于一个问题的选择应该相同,例如,应为@q。 什么 ,而不是@ c.choiceText

另外,名称应该是一些简短的标识符,而不是针对用户的文本,因为我认为c.choiceText是:

ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。 https://www.w3.org/TR/html401/types.html#type-name

暂无
暂无

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

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