ASP.net MVC表格验证

时间:2009-09-10 18:24:13

标签: asp.net-mvc

我已经完成了asp.net mvc的大部分表单验证,如IDataErrorInfo,Xval,ValidationToolkit等。 这特定于电话号码或信用卡验证,其中您的模型将具有名为“Phone”或“CreditCardNumber”的属性,但UI /视图将在三个文本框中显示值(通过在每个文本框中拆分3-3-4) )。 那么如何在“电话”字段中获取这三个输入并在模型中单独验证它们,如

  1. 首先输入 - 不能以0开头
  2. 第二个输入 - 应该有3个数字。
  3. 第三个输入 - 应该有4个数字。
  4. 然后使用上述任何给定的验证显示/添加所有三个文本框的错误样式(更喜欢使用IDataErrorInfo)

    如果任何其他线程有解决方案,请告诉我。

    提前致谢。

4 个答案:

答案 0 :(得分:1)

我可以澄清你的问题吗?您是否在询问如何将单个模型属性拆分为UI的多个显示部分,同时在模型自我验证单个属性时保留多个部分的知识?

我认为这些两个不同的问题。后者是一个简单的正则表达式验证问题,可以应用于模型验证。例如,验证应用程序块为此提供支持。看看这个David Hayden blog

前者可以通过特定的自定义模型绑定器来解决,它重新构成了三个字段。这是一个很好的,干净的方法。或者,您可以从FormCollection值自己将它们粘合在一起。

但是,您应该将这两个问题区分开来:无论数据来自何处(GUI,Web服务,文件导入等),您的模型总是希望能够自我验证,并且三个字段分割是只是该特定网页的要求。

答案 1 :(得分:0)

为什么不为这3个输入字段设置正则表达式?

答案 2 :(得分:0)

Scott Hanselman发表了一篇文章,将模型中的单个属性拆分为UI上的多个字段:

  

Splitting Date and Time

这可能对你有所帮助。

答案 3 :(得分:0)

我解决了这个问题 - 让UI对象验证基本内容(例如 - 这三个框不是空的)然后在将字段组合成真正的CC之后将真正的验证传递给服务器端号码或电话号码。是的,那里可能会有一些重复,但它可能比对抗各种验证框架更容易让他们做他们不想做的事情。