【发布时间】: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