我正在尝试按如下方式创建远程验证:
[Remote("CheckValue", "Validate", ErrorMessage="Value is not valid")]
public string Value { get; set; }
我正在使用ASP.NET Core(ASP.NET 5),似乎Remote不可用。 有谁知道如何使用ASP.NET CORE执行此操作?
答案 0 :(得分:6)
RemoteAttribute是ASP.Net MVC Core的一部分:
Microsoft.AspNet.Mvc
命名空间中。请参阅github中的RemoteAttribute
。Microsoft.AspNetCore.Mvc
命名空间中。请参阅github中的RemoteAttribute
。例如,在RC1中创建一个带有身份验证的新MVC站点。然后使用虚拟远程验证更新生成的LoginViewModel
,调用家庭控制器中的方法:
using Microsoft.AspNet.Mvc;
using System.ComponentModel.DataAnnotations;
public class LoginViewModel
{
[Required]
[EmailAddress]
[Remote("Foo", "Home", ErrorMessage = "Remote validation is working")]
public string Email { get; set; }
...
}
如果您在家庭控制器中创建该虚拟方法并设置断点,则只要您在登录表单中更改电子邮件,就会看到它被点击:
public class HomeController : Controller
{
...
public bool Foo()
{
return false;
}
}
答案 1 :(得分:0)
与此同时,文档已存在且可用here。简而言之,您只需要使用以下内容装饰视图模型的属性:
[Remote(action: "Foo", controller: "Bar", ErrorMessage = "Remote validation is working")]
[Required]
[Display(Name = "Name")]
public string Name { get; set; }
然后在控制器中创建一个动作(在本例中名为'Foo')(在本例中名为'Bar')并在那里添加你的逻辑:
[AcceptVerbs("Get", "Post")]
public async Task<IActionResult> Foo(string name)
{
bool exists = await this.Service.Exists(name);
if (exists)
return Json(data: false);
else
return Json(data: true);
}
最后注意:Remote属性位于Microsoft.AspNetCore.Mvc
命名空间中。