partial view by ajax from action method in MVC

Getting partial view by ajax from action method in MVC

Add controller to your MVC application : MyDatesController




using MyApp.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MyApp.Controllers
{
public class MyDatesController : Controller
{
public ActionResult GetDates()
{
return View();
}


[HttpPost]
public ActionResult ShowDates(DateTime startDate, DateTime endDate)
{
if (startDate > endDate)
{
return new EmptyResult();
}
List<DateTime> lst = new List<DateTime>();
for (var d = startDate; d <= endDate;d=d.AddDays(1) )
{
lst.Add(d);
}
return PartialView("_mydatepartial", lst);
}


}
}


Add PartialView view to views/MyDates : naming = _mydatepartial.cshtml


@model List<System.DateTime>
@{
int srno = 1;
}
<style>
.noworking{
background-color:rgb(190, 31, 14);
color:white;
}
</style>
<div class="panel panel-primary">
<div class="panel-heading">
<div class="panel-title"> Days</div>
</div>
<div class="panel-body">
<table class="table">
<thead>
<tr>
<th>Sr No</th>
<th>Day</th>
<th>Date</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
var tdcss = "";
if (item.Date.DayOfWeek == DayOfWeek.Sunday || item.Date.DayOfWeek== DayOfWeek.Saturday)
{
tdcss = "noworking";
}
<tr>
<td class="@tdcss">@srno</td>
<td class="@tdcss">@item.DayOfWeek</td>
<td class="@tdcss">@item.Date.ToString("dd, MMM yyyy")</td>
</tr>
srno++;
}
</tbody>
</table>

</div>
</div>


Add view to the following action method

public ActionResult GetDates()
{
return View();
}

view should look like this


@{
ViewBag.Title = "GetDates";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Styles.Render("~/Content/Date")
<style>
.bg-warning{
background-color:rgb(215, 205, 93);
}
</style>
<div class="form-horizontal">
<div class="form-group">
<div class="col-md-2">

<label class="control-label">Start Date</label>
@Html.TextBox("StartDate", "", htmlAttributes: new { @class = "form-control mydate" })

</div>
<div class="col-md-2">
<label class="control-label">End Date</label>

@Html.TextBox("EndDate", "", htmlAttributes: new { @class = "form-control mydate" })

</div>
<div class="col-md-1">
<label class="control-label">&nbsp;</label>
<button type="button" id="btnSearch" class="btn btn-success"><i class="glyphicon glyphicon-search"></i> Search</button>
</div>

</div>
<div class="form-group">
<div class="col-md-5">
<div id="dates">

</div>
</div>
</div>
</div>
@section scripts{
@Scripts.Render("~/bundles/Date");
<script>
$(function () {
$('.mydate,input[type="datetime"]').datepicker({
format: 'dd/MM/yyyy',
clearBtn: true,
autoclose: true
});


$('#btnSearch').click(function () {

if ($('#StartDate').val() == "" || $('#EndDate').val() == "" || $('#WorkingHours').val() == "") {
return;
}
GetDates();
});

});



function GetDates() {

var startDate = $('#StartDate').val();
var endDate = $('#EndDate').val();
var urlr = "@Url.Action("ShowDates", "MyDates")";
$.ajax({
url: urlr,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "html",
data: "{startDate:'" + startDate + "',endDate:'" + endDate + "'}",
success: function (data) {

$('#dates').html(data);
}
});
}
}


Post a Comment