Web
Analytics
Remote attribute in asp.net mvc | examples | Angular | ASP.NET Tutorials

For Consultation : +91 9887575540

Stay Connected :

Remote attribute in asp.net MVC

What is Remote Attribute

  • make a remote server call to validate specific data without posting the entire form to the server
  • Remote is an attribute of data annotation
  • Used for validation at model class in MVC.
  • Implemented with the use of jquery, jquery.validate.min.js, jquery.validate.unobtrusive.

Note: Do not forget to add the following code at the view

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

 

Example 1: Single model attribute validation

Step1: Create a database table (here table name is login in angular database)

CREATE TABLE [dbo].[login](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[username] [varchar](50) NULL,
	[password] [nvarchar](50) NULL,
	[lastlogin] [datetime] NULL
) ON [PRIMARY]

Remote validation example in mvc

Step2: Create a Model and dbContext class using code first (if you are not aware with it, Please watch the video which is given below)

namespace testCode.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;
    using System.Web.Mvc;

    [Table("login")]
    public partial class login
    {
        public int id { get; set; }

        [StringLength(50)]
        [Remote("CheckUserName","RemoteValidationEx", ErrorMessage ="Username already exists")]
        public string username { get; set; }

        [StringLength(50)]
        public string password { get; set; }

        public DateTime? lastlogin { get; set; }
    }
}

[Remote(“CheckUserName”,”RemoteValidationEx”, ErrorMessage =”Username already exists”)] 

CheckUserName: It is JSON Action which will be defined in the controller to validate username is already exists or not, will return true or false.

RemoteValidationEx:Controller name where CheckUserName exists.

ErrorMessage: Which has to show as a validation error.





Step 3: Create a Controller class (RemoteValidationEx) and add the following code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using testCode.Models;

namespace testCode.Controllers
{
    public class RemoteValidationExController : Controller
    {
       
        public ActionResult Index()
        {
            return View();
        }
        
        public ActionResult Save()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Save(login obj)
        {
            using (var db = new Checkvalidation())
            {
                if(ModelState.IsValid)
                {
                    db.logins.Add(obj);
                    return RedirectToAction("OK");
                }
                
                    return View();               
            }
               
        }
        public ActionResult OK()
        {
            return Content("OK");
        }
        public JsonResult CheckUserName(string username)
        {
            using (var db = new Checkvalidation())
            {
                var result = !db.logins.Any(x => x.username.ToLower() == username.ToLower());
                return Json(result, JsonRequestBehavior.AllowGet);
            }
        }
    }
}




@model testCode.Models.login

@{
    ViewBag.Title = "Save";
}

<h2>Save</h2>


@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>login</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.username, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.username, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.username, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.password, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.password, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.password, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.lastlogin, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.lastlogin, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.lastlogin, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

 

Step 3: Run your code and see the following URL.

http://localhost:50720/RemoteValidationEx/Save

(Note: localhost:50720 it will be changed as per your application port)

RemoteValidation With Example in MVC

ASP.NET MVC Remote Validation For Multiple Fields With AdditionalFields Property

Step : 1 Change in Model Property of previous code (login.cs)

namespace testCode.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;
    using System.Web.Mvc;

    [Table("login")]
    public partial class login
    {
        public int id { get; set; }

        [StringLength(50)]
       
        public string username { get; set; }

        [StringLength(50)]
        [Remote("CheckUserName1", "RemoteValidationEx", AdditionalFields = "username", ErrorMessage = "Username already exists")]
        public string password { get; set; }

        public DateTime? lastlogin { get; set; }
    }
}

Step 2: Change in controller

  public JsonResult CheckUserName1(string username, string password)
        {
            using (var db = new Checkvalidation())
            {
                var result = !db.logins.Any(x => x.username.ToLower() == username.ToLower() & x.password.ToLower() == password.ToLower());
                return Json(result, JsonRequestBehavior.AllowGet);
            }
        }