MVC 5 удаленная проверка не запущена - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь реализовать удаленную проверку в MVC.Я прочитал несколько статей и вопросов, уже размещенных здесь, но ответа нет.

Контроллер:

public class GroupsController: Controller
{
    [HttpPost]
    public ActionResult TestRemoteValidation(string Name)
    {
        return Json(false);
    }
}

Просмотр:

@using (Html.BeginForm("Index", "Defaults", FormMethod.Post))
{
      @Html.TextBoxFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
      @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })

     <input type="submit" class="btn btn-primary" value="Enregistrer" />
}

И модель:

public class Group
{
    [Key]
    public int Id { get; set; }
    [Display(Name = "Nom du Groupe")]
    [Required]
    [Remote("TestRemoteValidation", "Groups", HttpMethod = "POST", ErrorMessage = "Remote fired")]
    //[CustomRemoteValidation("TestRemoteValidation", "Groups", AdditionalFields = "Id")]
    public string Name { get; set; }

    public virtual ICollection<ApplicationUser> ApplicationUsers { get; set; }
}

Сгенерированный HTML-код:

<input data-val="true" data-val-remote="Remote fired" data-val-remote-additionalfields="*.Name" data-val-remote-type="POST" data-val-remote-url="/Groups/TestRemoteValidation" data-val-required="Le champ Nom du Groupe est requis." htmlAttributes="{ class = form-control }" id="Name" name="Name" type="text" value="" />

Я использую Metadata потому что это сущность -> не проблема, я проверил с другой ViewModel, и это то же самое.

[Required] и [StringLength(10)] запущены.Когда я ставлю точку останова в TestRemoteValidation, ничего не происходит.

Например, я могу выполнить удаленную проверку с помощью пользовательского класса удаленного атрибута и переопределения Model.IsValid, но я не понимаю, почему этопуть не работает.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

добавить

[AllowAnonymous] до

[HttpPost] public ActionResult TestRemoteValidation (Имя строки)

0 голосов
/ 20 сентября 2018

Если Vehicule - это @model, используемое в представлении

@model Vehicule

, то контроллер должен ожидать, что модель

public class DefaultsController : Controller {
    [HttpGet]
    public ActionResult Index() {
        var model = new Vehicule();
        return View(mdoel);
    }

    [HttpPost]
    public ActionResult Index(Vehicule model) {
        if(ModelState.IsValid) {
            //...do something
            //..possible redirect 
        }
        //if we get this far something is wrong with data
        return View(model);
    }
}

Связыватель модели примет валидациюпри привязке модели из запроса.

...