【问题标题】:Radio button validation before post发布前的单选按钮验证
【发布时间】:2018-03-18 17:39:14
【问题描述】:

我想确保用户选择所提问题的答案。我已经尝试过 JQuery,自定义验证类,将模型属性设置为必需。总而言之,如果没有选择单选按钮,则会显示错误消息,并且用户必须先选择一个答案,然后才能进入下一个问题。

这是没有 ValidationMessageFor 的 HTML/Razor,因为它不起作用。

@using (Html.BeginForm("Question", "PreRegistration", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
 @if (Model.Questions.fldAnswerType == "Radio")
  {
    <form id="myForm" name="myForm">
        <div class="form-group">
            <div style="margin-left: 20px;">
                @{
                    if (Model.Questions.fldOption1 != null)
                    {
                        <div class="radio">
                            @Html.RadioButton("Radio", @Model.Questions.fldOption1, new { @class = "myGroup" }) @Model.Questions.fldOption1                             
                        </div>
                    }

                    if (Model.Questions.fldOption2 != null)
                    {
                        <div class="radio">
                            @Html.RadioButton("Radio", @Model.Questions.fldOption2, new { @class = "myGroup" }) @Model.Questions.fldOption2                             
                        </div>
                    }

                    if (Model.Questions.fldOption3 != null)
                    {
                        <div class="radio">
                            @Html.RadioButton("Radio", @Model.Questions.fldOption3, new { @class = "myGroup" }) @Model.Questions.fldOption3
                        </div>
                    }

                    if (Model.Questions.fldOption4 != null)
                    {
                        <div class="radio">
                            @Html.RadioButton("Radio", @Model.Questions.fldOption4) @Model.Questions.fldOption4
                        </div>
                    }

                    if (Model.Questions.fldOption5 != null)
                    {
                        <div class="radio">
                            @Html.RadioButton("Radio", @Model.Questions.fldOption5) @Model.Questions.fldOption5
                        </div>
                    }

                    if (Model.Questions.fldOption6 != null)
                    {
                        <div class="radio">
                            @Html.RadioButton("Radio", @Model.Questions.fldOption6) @Model.Questions.fldOption6
                        </div>

                    }
                }
            </div>
        </div>
    </form>
<input type="submit" value="Next" id="btn" class="btn btn-primary" />

我花了一整天的时间试图让它工作,但我不能......

[HttpPost]
public ActionResult Question(FormCollection collection, Questions questions)
{
   if (!ModelState.IsValid)
   {
     var viewModel = new RegistrationViewModel
      {
        Questions = questions,
        Responses = response
      };

     return View("Question", viewModel);
   }
 }

我发回的问题模型始终为空,所以我假设这就是模型状态始终有效的原因?

任何指针将不胜感激

【问题讨论】:

  • ModelState无效无关。您有多个问题 - 首先,您有嵌套的表单,它是无效的 html。如果模型是null,那是因为你没有绑定到你的模型(但你甚至没有费心去展示它)。您的模型是否真的包含名为Radio 的属性? (显然不是)

标签: c# asp.net-mvc validation asp.net-mvc-validation


【解决方案1】:

试试这个:

HttpPost] public ActionResult Question(FormCollection collection, Questions questions)
{
    if (ModelState.IsValid)
    {
        var viewModel = new RegistrationViewModel { Questions = questions, Responses = response };
        return View("Question", viewModel);
    }
}
Response.next page 

【讨论】:

  • 这与问题无关!
  • 这甚至无法编译。
猜你喜欢
  • 2015-09-01
  • 2012-12-01
  • 1970-01-01
  • 2016-02-15
  • 2016-03-01
  • 2014-09-01
  • 2011-04-02
  • 2012-10-18
相关资源
最近更新 更多