【问题标题】:Make asp.net mvc validation work without helpers使 asp.net mvc 验证在没有帮助的情况下工作
【发布时间】:2013-07-26 01:31:56
【问题描述】:

有人可以提供一个很好的教程,告诉我如何以不显眼的方式验证我的 html 字段, 但不使用 MVC 助手。 有可能吗?

我想保留纯 html 并使用 input type="text" 字段而不是 mvc 助手 <%= Html.TextBox("Name") %> 但仍然使用模型验证..

public class Employee
{
    [Required]
    public string Name { get; set; }
}

jquery Ajax 也可以吗?

谢谢

【问题讨论】:

  • 你这样做有充分的理由吗?
  • 原因 1. 是的,我不想坚持微软,也许我会在某个阶段决定搬家。原因 2. 假设明天 asp.net MVC 会像今天死掉的表单一样死掉,即使它是微软的,我也需要转移到另一个环境,他们将再次更改所有逻辑和帮助程序/控件,然后我需要从头开始覆盖所有内容,我为什么要这样做如果我可以为客户端使用普通的 html 和 javascript,它们总是相同的?
  • 嗯,这就像是说我不想用c#写我的代码,因为我以后可能想用java,然后我得从头开始。跨度>
  • 如果我只能重写其中的一个,为什么还要重写客户端和服务器?

标签: asp.net-mvc html-helper unobtrusive-validation


【解决方案1】:

虽然可以在不使用帮助器的情况下在 MVC 中执行不显眼的验证,但作为开发人员,如果不使用 mvc 帮助器手动进行验证,将会很痛苦。严格地说,它会影响你的性能并使你的代码不可读。

基本上,不显眼的验证由两部分组成:服务器端,通过模型字段的数据属性和 MVC 助手,生成必要的标记,以及客户端库,jquery.validate.unobtrusive.js,它将这些标记解析为对 jquery validate 插件有意义的部分。

因此,一般情况下,您可以手动编写必要的标记,只要加载了验证 js 库,验证就可以工作。例如,作为验证对象的字段必须使用 data-val='true' 属性进行标记。如果你想让你的字段成为必填项,你应该另外写一些类似 data-val-required="error message" 的东西。对于长度验证 - data-val-length-min="5"(显然,最小) data-val-length-max="50"(最大长度),data-val-length="Min 5 max 50 chars required" .

虽然,当使用普通的mvc方法时,这只是模型属性的问题:

[Required]
[StringLength(50, MinimumLength = 5)]
public string Name { get; set; }

以及标记中的一行代码:

@Html.TextBoxFor(o=>o.Name)

漂亮,闪亮,将视图和模型分开,并有助于 KISS。

关于你问题的第二部分。如果我正确理解了您的问题,您想验证动态表单。大概会是这样的答案: jquery.validate.unobtrusive not working with dynamic injected elements

【讨论】:

  • 这很烦人,我确实想在没有任何帮助的情况下保持我的 html 干净......如果在某个阶段我需要从 asp.net 转移到其他技术,我会做很多工作来清理所有这些 asp 代码甚至在客户端...
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2017-03-14
  • 2014-04-13
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
相关资源
最近更新 更多