Asp.net mvc 如何在AJAX帖子中使用服务器端验证?

Asp.net mvc 如何在AJAX帖子中使用服务器端验证?,asp.net-mvc,data-annotations,Asp.net Mvc,Data Annotations,斯科特·古思里(Scott Guthrie)在他的博客文章中描述了如何实现这一目标 例如: public class Product { [Display(Name="Product Number")] [Range(0, 5000)] public int ProductID { get; set; } [Display(Name="Name")] [Required] public string ProductName { get; set;

斯科特·古思里(Scott Guthrie)在他的博客文章中描述了如何实现这一目标

例如:

public class Product
{
    [Display(Name="Product Number")]
    [Range(0, 5000)]
    public int ProductID { get; set; }

    [Display(Name="Name")]
    [Required]
    public string ProductName { get; set; }

    [Display(Name="Price")]
    [DataType(DataType.Currency)]
    public double ListPrice { get; set; }
}
在对这篇博文的评论中@Ke写道:

服务器端验证如何使用ajax post?i、 如何将验证错误发送回客户端

斯科特回答说:

是的,你可以处理。我相信菲尔·哈克(Phil Haack)很快就会在他的博客上写下这件事

但是我找不到这篇博文。如何将服务器端验证与AJAX post结合起来


我见过的最好的选择似乎是使用partials将表单发送回客户机。我宁愿使用客户端Javascript来启用错误消息。

数据注释验证的工作方式是对包含错误的字段应用特殊的css类,错误消息由生成相应div的html帮助程序显示。因此,最好的选择是返回一个包含表单的局部视图,允许您显示错误消息

如果您想使用
JSON
XML
,则必须在响应结构中手动传递验证错误,并在成功回调中使用javascript手动处理

就客户端验证而言,它将起作用,因为如果验证失败,表单将不会提交(使用ajax或不使用ajax)