Three years before I wrote the following article: Disable Future and past date in ASP.NET, which
has huge response. Currently it has 68.2 k views. So by considering the
same requirement in ASP.NET MVC I decided to write same type of article
using ASP.NET MVC with the help of jQuery UI library. So let us
implement this requirement step by step,
Step 1 : Create an MVC application
Right click on Model folder in the created MVC application and add class named EmpModel and write the following line of code,
HomeController.cs
In the above code, The only action result method
named Index handle the user request when the user request for the view
named Index.cshtml which will be added later .
Step 4: Reference jQuery UI.
Reference jQuery UI css and js library reference as there are many ways to add the reference of jQuery library into our project. The following are some methods,
For making the above function yo work don't forget to add the reference of the following jQuery CDN library as,
Step 6: Add View.
Add strongly typed view named index from EmpModel class as,
After adding necessary code, files and logic the Index.cshtml code will look like the following,
Index.cshtml
Now run the application and put mouse pointer into the textbox the calendar control will popup as in the following screenshot,
Step 1 : Create an MVC application
- "Start", then "All Programs" and select "Microsoft Visual Studio 2015".
- "File", then "New" and click "Project", then select "ASP.NET Web Application Template", then provide the Project a name as you wish and click on OK.
- Choose MVC empty application option and click on OK
Right click on Model folder in the created MVC application and add class named EmpModel and write the following line of code,
EmpModel.cs
public class EmpModel { [Display(Name ="Enter Date")] public DateTime EnterDate { get; set; } }
Step 3: Home controller
Right click on Controller folder in the created MVC application and add the controller class,
Now after selecting controller template, click on add button then the following window appears,
Specify the controller name and click on Add button,
Right click on Controller folder in the created MVC application and add the controller class,
Now after selecting controller template, click on add button then the following window appears,
Specify the controller name and click on Add button,
HomeController.cs
public class HomeController : Controller { // GET: Home public ActionResult Index() { return View(); } }
Step 4: Reference jQuery UI.
Reference jQuery UI css and js library reference as there are many ways to add the reference of jQuery library into our project. The following are some methods,
- Using NuGet package manager, you can install library and reference into the project.
- Use CDN library provided by Microsoft, jQuery, Google or any other which requires active internet connection.
- Download jQuery files from jQuery official website and reference into the project.
As
we know how to use jQuery UI calendar we need to use datepicker
function and to set or allow specific date range in calendar we need to
use the following properties of datepicker function,
- yearRange: It sets the year range for calendar control such as how many past and future years to display in calendar.
- minDate : It sets the minimum date for calendar control .
- maxDate : it sets the maximum date range for calendar control .
$(document).ready(function() { $("#EnterDate").datepicker({ dateFormat:"dd-mm-yy", minDate: -0, maxDate: "+0M +0D" }); });
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
Add strongly typed view named index from EmpModel class as,
After adding necessary code, files and logic the Index.cshtml code will look like the following,
Index.cshtml
@model DissablePastandFutureDateInMVC.Models.EmpModel @{ ViewBag.Title = "www.compilemode.com"; } <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <script> $(document).ready(function() { $("#EnterDate").datepicker({ dateFormat:"dd-mm-yy", minDate: -0, maxDate: "+0M +0D" }); }); </script> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.EnterDate, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.EnterDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EnterDate, "", new { @class = "text-danger" }) </div> </div> </div> }
In
the above screenshot you can see that only current date is enabled and
all other dates are disabled. Now let us change the maxDate property to
enable only five days from current date,
$(document).ready(function() { $("#EnterDate").datepicker({ dateFormat:"dd-mm-yy", minDate: -0, maxDate: "+0M +4D" }); });
Now run the application the output will be as follows:
In
the preceding screenshot you can see that only five dates are available
including current date. From all the preceding examples, I hope you
learned how to disable past and future dates using jQuery UI calendar
control in ASP.NET MVC.
Note:
Note:
- For the detailed code, please download the sample zip file.
- You need to use the jQuery library and if you are using CDN library then it requires active internet connection .
Summary
I hope this article is useful for all readers. If you have a suggestion then please contact me.
I hope this article is useful for all readers. If you have a suggestion then please contact me.
Post a Comment