如何通过数据注释配置远程验证器以在/ 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控制器的远程验证器似乎是一种自然的选择。
答案 0 :(得分:3)
无法使用Web API控制器。这是RemoteAttribute
的限制。为避免与MVC控制器冲突,要匹配Web API路由,您必须包含httproute
密钥,RemoteAttribute
不会。{/ p>
您应该能够继承RemoteAttribute
并覆盖GetUrl
以使其有效。