【问题标题】:MVC [Required] attribute not workingMVC [必需] 属性不起作用
【发布时间】:2017-05-12 14:05:55
【问题描述】:

我是 MVC 的新手,正在尝试制作一个带有复选框的简单申请表来接受条款。 我不明白为什么我的错误信息没有显示。 这是我的 .cshtml

<div class="form-row">
    <div class="validation-container">@Html.ValidationMessageFor(m => m.HasAcceptedTerms)
   </div>
    <div class="label-container">@Html.LabelFor(m => m.HasAcceptedTerms)</div>
    <div class="form-control">@Html.EditorFor(m => m.HasAcceptedTerms)</div>
</div>

我的视图模型

 [Required(ErrorMessage = "Please indicate you have read the statements above before sending your request")]
    [Display (Name = "Please tick to show you accept all the above statements")]
        public bool HasAcceptedTerms
    {
        get; set;
    }

控制器

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AppForm(AppFormViewModel App)
    {

        if (ModelState.IsValid)
        {
            return View();
        }

        return View(App);
    }

当我单击按钮时,页面会刷新,没有任何变化。调试时,Model.Statefalse,所以我真的不明白为什么什么也没发生。有人有什么想法吗?

【问题讨论】:

  • 任何帮助将不胜感激!!!
  • 请注意,model-view-controller 标签是针对有关模式的问题。 ASP.NET-MVC 实现有一个特定的标记。

标签: asp.net-mvc validation razor


【解决方案1】:

作为值类型,您的bool 具有默认值false - 这是一个值,因此不会被识别为“缺失”。您需要验证该值为true,而不是必需的。

您可以查看this 问题以了解实现此目的的方法。

【讨论】:

  • 哦,好吧,我没看到那样。这就是为什么 Model.State 显示为假的原因,因为未选中复选框因此是假的?
  • @user6950100 是的,这是正确的,尽管即使没有可以绑定的表单控件,它仍然会被认为是错误的。基本上,使用RequiredAttribute 无法满足您的需求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多