[英]Validating posted form data in the ASP.NET MVC framework
我一直在玩ASP.NET MVC框架,让我感到困惑的一件事就是我打算如何对发布的表单数据进行服务器端验证。 我认为我不会回发到同一个网址,但如果不这样做,我如何使用输入的数据和错误消息重新显示表单? 此外,验证逻辑应该在哪里? 在模型或控制器? 这似乎是Web表单更强大的少数领域之一(我错过了验证控件)。
以下是MVC中流程的概述:
验证框架将帮助您完成此过程。 此外,我认为ASP.NET MVC团队正在为下一个预览计划验证框架。
您可能想看一下ScottGu关于ASP.Net上一页的最新帖子。它将介绍一个非常有趣的验证示例:
据我所知,每个人都在试图找出“标准”的做法。 那肯定是看看Phil Haack和Scott Guthrie关于MVC的最新帖子,你会发现一些关于他们如何做的有趣信息。 当我为自己玩它时,我为我生成的LinqToSql数据类创建了一个ModelBinder。 你可以查看这篇文章,了解如何组建一个基本的ModelBinder:
在您的操作中,如果您创建了“Product”ModelBinder,您只需声明操作:
公共ActionResult新产品(产品产品)
并且模型绑定器将负责将发布的数据分配给对象属性,只要您无论如何都正确构建它。
在你的GetValue()方法中,你可以实现你想要的任何验证,无论是使用异常,正则表达式,还是你可以调用的任何东西,如:
(ModelStateDictionary_name).AddModelError(“form_element_id”,“entered_value”,“error_message”);
然后你可以在视图中抛出一个<%= Html.ValidationSummary()%>来显示你的所有错误。
对于客户端验证,我只使用了jQuery。 在获得基本样本设置之后,您可以开始做一些有趣的事情,将所有这些与部分视图和Ajax调用相结合。
你看过这个吗? http://www.codeplex.com/MvcValidatorToolkit
引自该页面
Validator Toolkit为新的ASP.NET MVC框架提供了一组验证器,以使用验证集在客户端和服务器端验证HTML表单。
我担心,比我更精通MVC的人不得不谈论你应该把建筑物放在哪里。
我只是学习MVC框架,所以我不确定它是多么偏离,但据我所知,你会在View.aspx这样的View上有一个表单。 然后,此表单将向控制器发送另一个操作方法,例如Update()传递您在Edit.aspx中设置的表单内容作为参数。
Update(int id, string name, string foo)
您可以在该方法中进行验证。 如果一切正常,
return View("Item", yourObject)
Castle项目中有Castle.Components.Validator模块。 它非常敏捷和强大。 它基于模型属性(或任何其他源)生成验证规则,甚至能够使用jQuery,Prototype Validation,fValidate等生成JS验证。 当然,在IValidationEngine接口后面抽象验证器是明智的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.