2016-03-16 3 views
3

Я пытаюсь создать удаленную проверку следующим образом:Использование удаленной проверки с ASP.NET Ядра

[Remote("CheckValue", "Validate", ErrorMessage="Value is not valid")] 
public string Value { get; set; } 

Я использую ASP.NET Сердечник (ASP.NET 5) и, кажется, Remote не доступен. Кто-нибудь знает, как это сделать с помощью ASP.NET CORE?

ответ

5

RemoteAttribute является частью ASP.Net MVC Ядро:

  • Если вы используете RC1, то в Microsoft.AspNet.Mvc пространстве имен. См. RemoteAttribute в github.
  • После переименования, запланированного в RC2, оно будет находиться в пространстве имен Microsoft.AspNetCore.Mvc. См. RemoteAttribute в github.

Например, в 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; 
    } 
} 
+0

Вы правы ... Я смотрел System.Component.DataAnnotations, и я даже зашел в этот источник библиотеки в Github. Конечно, это в Microsoft.AspNet.Mvc. Благодаря! –

0

в то же время, документация есть и доступны here. В двух словах вам просто нужно украсить свойство вашей точки зрения модели со следующим:

[Remote(action: "Foo", controller: "Bar", ErrorMessage = "Remote validation is working")] 
    [Required]   
    [Display(Name = "Name")] 
    public string Name { get; set; } 

Затем создать действие (названный «Foo» в данном примере) в контроллере (названный «Бар» в этом примере) и добавить логика есть:

[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); 
    } 

Конечная нота: удаленный атрибут в Microsoft.AspNetCore.Mvc пространстве имен.

Смежные вопросы