我已经完成了asp.net mvc的大部分表单验证,如IDataErrorInfo,Xval,ValidationToolkit等。 这特定于电话号码或信用卡验证,其中您的模型将具有名为“Phone”或“CreditCardNumber”的属性,但UI /视图将在三个文本框中显示值(通过在每个文本框中拆分3-3-4) )。 那么如何在“电话”字段中获取这三个输入并在模型中单独验证它们,如
然后使用上述任何给定的验证显示/添加所有三个文本框的错误样式(更喜欢使用IDataErrorInfo)
如果任何其他线程有解决方案,请告诉我。
提前致谢。
答案 0 :(得分:1)
我可以澄清你的问题吗?您是否在询问如何将单个模型属性拆分为UI的多个显示部分,同时在模型自我验证单个属性时保留多个部分的知识?
我认为这些两个不同的问题。后者是一个简单的正则表达式验证问题,可以应用于模型验证。例如,验证应用程序块为此提供支持。看看这个David Hayden blog。
前者可以通过特定的自定义模型绑定器来解决,它重新构成了三个字段。这是一个很好的,干净的方法。或者,您可以从FormCollection值自己将它们粘合在一起。
但是,您应该将这两个问题区分开来:无论数据来自何处(GUI,Web服务,文件导入等),您的模型总是希望能够自我验证,并且三个字段分割是只是该特定网页的要求。
答案 1 :(得分:0)
为什么不为这3个输入字段设置正则表达式?
答案 2 :(得分:0)
答案 3 :(得分:0)
我解决了这个问题 - 让UI对象验证基本内容(例如 - 这三个框不是空的)然后在将字段组合成真正的CC之后将真正的验证传递给服务器端号码或电话号码。是的,那里可能会有一些重复,但它可能比对抗各种验证框架更容易让他们做他们不想做的事情。