MVC4到/ api / Route中模型的远程验证器

时间:2012-11-10 00:56:58

标签: c# .net asp.net-mvc asp.net-mvc-4 asp.net-web-api

如何通过数据注释配置远程验证器以在/ api / {controller}而不是/ {controller} / {action}进行调用?

我的模特:

public class MyModel
{
    [Required]
    public string Name { get; set; }
    [EmailAddress(ErrorMessage="We need a valid email."), Remote(....)]
    public string Email { get; set; }
}

无论我尝试什么,该远程验证器调用的URL都是/ foo / bar而不是只是到/ api / foo。

远程验证器中是否支持WebAPI?

我希望我的电子邮件唯一性检查尽可能使用.NET验证器(而不是必须手动完成),我的表单是通过AJAX提交的,我想在表单提交之前验证电子邮件,使用指向API控制器的远程验证器似乎是一种自然的选择。

1 个答案:

答案 0 :(得分:3)

无法使用Web API控制器。这是RemoteAttribute的限制。为避免与M​​VC控制器冲突,要匹配Web API路由,您必须包含httproute密钥,RemoteAttribute不会。{/ p>

您应该能够继承RemoteAttribute并覆盖GetUrl以使其有效。