【问题标题】:ASP MVC Razor - FormValidation - @Html.ValidationMessageFor - Editor [duplicate]ASP MVC Razor - FormValidation - @Html.ValidationMessageFor - 编辑器[重复]
【发布时间】:2016-03-09 10:57:53
【问题描述】:

对我目前使用的所有其他元素进行验证,但没有显示编辑器的验证消息。 ModelState 具有正确的错误状态, 但在表单上看不到任何消息。

这是我所拥有的:

型号:

    [Required(AllowEmptyStrings = false, ErrorMessage = "Diese Feld muss angegeben werden.")]
    [StringLength(8000,ErrorMessage = "Feld muss zwischen {2} und {1} Zeichen enthalten.", MinimumLength = 8)]
    [DataType(DataType.MultilineText)]
    [AllowHtml]
    [Display(Name = "Beschreibung")]
    public string Description { get; set; }

查看:

 <div class="form-group">
        @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
           @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
        </div>
    </div>

这也不起作用:

 @Html.ValidationMessageFor(model => model.Description)

当我这样做时:

  @Html.ValidationMessageFor(model => model.Description, "test message")

它有效 - 意思是,它显示“测试消息” - 但我想要我在模型中定义的消息......

----这是一些按预期工作的字段----

型号:

 [Required(ErrorMessage = "Dieses Feld muss angegeben werden.")]
 [StringLength(25, MinimumLength = 2)]
 [Display(Name = "KeyWord")]
 public string Keyword { get; set; }

查看:

  <div class="form-group">
        @Html.LabelFor(model => model.Keyword, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Keyword, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Keyword, "", new { @class = "text-danger" })
        </div>
    </div>

当字段为空并尝试提交时,将显示所需的消息。 当字段包含的字符太少或太多,并且字段不在焦点或尝试提交时,显示字符串长度消息.. 这就是我想要的第二编辑...

-----工作区结束-----

我做错了什么?

谢谢


已解决: 就是用“jQuery TE”来美化编辑器。

感谢@Stephen Muecke 和@Varun Vasishtha 把我推到那里;)

【问题讨论】:

  • 您是说如果您将 textarea 留空,就不会收到错误消息?
  • 基本上是的,但是当我输入 1 个字符时它也没有显示(只是为了让它不为空)
  • 您显示的代码工作正常。我认为还有一些其他代码导致了问题
  • 请参考this DotNetFiddle 以证明它与您显示的代码一起工作。您是否有机会为隐藏元素的文本区域使用 jquery 插件(因此不会在客户端上进行验证)?
  • 然后你需要修改$.validator(默认不验证隐藏元素)。参考答案herehere

标签: asp.net asp.net-mvc razor


【解决方案1】:

一定存在限制 jquery 验证工作的 javascript 错误,尝试在 Firefox 中使用 Firebug 进行调试

【讨论】:

  • 谢谢,但找不到任何问题 .. 将继续查看 - 我用有效的字段更新了问题 --- 所以通常验证正在工作......
  • 尝试删除 AllowEmptyStrings = false
  • 啊,我和@Stephen Muecke fiddle 一起走得更近了……正如你所说,有一些 js 限制了对此的验证……在我的情况下是所见即所得的编辑器……谢谢
  • 干杯!!! ..如果可以,请将其标记为答案
  • 这不是 javascript 错误 - 默认情况下不验证隐藏元素。
【解决方案2】:

排除最后一条“测试消息”:

 @Html.ValidationMessageFor(model => model.Description)

查看文档:https://msdn.microsoft.com/en-us/library/system.web.mvc.html.validationextensions.validationmessagefor%28v=vs.118%29.aspx

【讨论】:

  • 谢谢,但没有消息以太......
  • 您是在使用非侵入式验证,使用 javascript 还是在提交时没有错误?
  • 认为它使用了不显眼的验证,我会用一些可以作为 expexted 的字段来更新问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2016-07-11
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多