1

如何通过数据注释配置远程验证器以在 /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 控制器的远程验证器似乎是一个自然的选择。

4

1 回答 1

3

无法使用 Web API 控制器。这是RemoteAttribute. 为避免与 MVC 控制器发生冲突,要匹配 Web API 路由,您必须包含一个httproute密钥,但这RemoteAttribute是不行的。

您应该能够继承RemoteAttribute和覆盖GetUrl以使其工作。

于 2012-11-10T01:49:35.320 回答