Do something on success response for remote validation in mvc

前端 未结 1 1848
既然无缘
既然无缘 2021-02-04 12:35

I am using remote validation to check the availability of username during registration for my asp.net mvc 3 applicaion (C#).

I am using MVC remote Attribute validation a

相关标签:
1条回答
  • 2021-02-04 13:23

    One way to achieve that is to add a custom HTTP response header from the validation action:

    public ActionResult IsUserNameAvailable(string username)
    {
        if (IsValid(username))
        {
            // add the id that you want to communicate to the client
            // in case of validation success as a custom HTTP header
            Response.AddHeader("X-ID", "123");
            return Json(true, JsonRequestBehavior.AllowGet);
        }
    
        return Json("The username is invalid", JsonRequestBehavior.AllowGet);
    }
    

    Now on the client we obviously have a standard form and an input field for the username:

    @model MyViewModel
    @using (Html.BeginForm())
    {
        @Html.EditorFor(x => x.UserName)
        @Html.ValidationMessageFor(x => x.UserName)
        <button type="submit">OK</button>
    }
    

    and now the last piece of the puzzle is to attach a complete handler to the remote rule on the username field:

    $(function () {
        $('#UserName').rules().remote.complete = function (xhr) {
            if (xhr.status == 200 && xhr.responseText === 'true') {
                // validation succeeded => we fetch the id that
                // was sent from the server
                var id = xhr.getResponseHeader('X-ID');
    
                // and of course we do something useful with this id
                alert(id);
            }
        };
    });
    
    0 讨论(0)
提交回复
热议问题