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

时间:2010-06-19 15:42:48

标签: asp.net-mvc data-annotations

在他的博客文章中,Scott Guthrie描述了如何enable validation using DataAnnotations

示例:

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帖子一起使用?即,如何将验证错误发送回客户端?

斯科特回答说:

  

是的 - 你可以解决这个问题。我相信Phil Haack很快会在他的名单上发表博客。

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

我见过的最佳选项似乎涉及使用partials将表单发送回客户端。我宁愿使用客户端Javascript来启用错误消息。

1 个答案:

答案 0 :(得分:0)

数据注释验证的工作方式是将特殊的css类应用于包含错误的字段,并通过生成相应div的html助手显示错误消息。所以最好的选择是返回一个包含表单的部分视图,允许您显示错误消息。

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

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