Get data from Ajax in ASP.NET Core not working?

360 Views Asked by At

I'm new at ASP.NET Core, and this is how I get data from Ajax.

I have a View Model like this

public class RequestSearchDefaultModel
{
    public string FromToDate { get; set; }
    public int Status { get; set; }
    public List<SelectListItem> StatusType { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
    public IEnumerable<RequestViewModel> requestViewModel { get; set; }
}

When I search the form, I use Ajax to get the data

function OpenSearch() {
    var stt = $('#StatusDropDown').val();
    var daterange = $('#daterange').val();
    var url = "@Url.Action("Search","RequestApproval")";
    var model = { FromToDate: daterange, Status: stt };
    $.ajax({
        type: "POST",
        data: JSON.stringify(model),
        url: url,
        contentType: "application/json",
    }).done(function (res) {
        console.log("here");
        $('#myTable').html(res);
    })
}

This is controller

[HttpPost]
public async Task<IActionResult> Search([FromBody] RequestSearchDefaultModel m)
{
    m.FromDate = DateTime.Parse(m.FromToDate.Substring(0, 10)).Add(new TimeSpan(00, 0, 0));
    m.ToDate = DateTime.Parse(m.FromToDate.Substring(14)).Add(new TimeSpan(23, 59, 59));
    var request = _headerService.Search();
    m.requestViewModel = _mapper.Map<IEnumerable<RequestViewModel>>(request);
    return PartialView("_RequestBody", m);
}

This is the view

<div class="card-body">
    <div class="table-responsive" id="myTable">
        @Html.Partial("_RequestBody")
    </div>
</div>

And this is the partial view

@model RequestSearchDefaultModel

<table class="table table-striped">
    <thead>
        <tr>
            <th>Seq.</th>
            <th>Title</th>
            <th>Status</th>
            <th>Draft Date</th>
            <th>Final Approval Date</th>
        </tr>
    </thead>
    <tbody id="RequestBody">
        @if (Model.requestViewModel == null)
        {
        }
        else
        {
            foreach (var item in Model.requestViewModel)
            {
                <tr>
                    <td>@item.ID</td>
                    <td>@item.DocumentNo</td>
                    <td>
                        <a asp-action="Edit" asp-route-id="@item.ID">@item.Title</a>
                    </td>
                    <td>@item.DraftDate</td>

                </tr>
            }
        }
    </tbody>
</table>

But I can't get the data, I don't know where I wrong, so please help. Thanks in advance.

0

There are 0 best solutions below