user1802716
user1802716

Reputation: 21

Refresh User Control in MVC

I have 3 user controls in an aspx page in my MVC application. i bind data from DB from one controller.

on the selection of "Filter / Status" i want to bind data (refresh) to "List" user control with out refreshing "Filter & Status" user controls.

below are my user controls in aspx page. please help me how to refresh part of the page/user control.

i have tried by returning only "ListView" View data. but its searching for the other 2 views & throwing exception.

          <td>
                <%Html.RenderPartial("Filter", ViewData["FilterView"]); %>
            </td>

            <td valign="top" width="15%">
                <%Html.RenderPartial("Status", this.ViewData["StatusView"]); %>

            </td>
            <td valign="top" width="85%">

                <%Html.RenderPartial("List", this.ViewData["ListingView"]); %>

            </td>

Upvotes: 2

Views: 765

Answers (1)

free4ride
free4ride

Reputation: 1643

do sth like this

  1. html (aspx page):
   <div id="ListingView">
    <%Html.RenderPartial("List", this.ViewData["ListingView"]); %>
    </div>
    ...
    <input type="button" id="refreshListingView" />
  1. javascript to handle it:

     $('#refreshListingView').click(function () {
        var selectedStatusId = 'get here proper status id';
        $.ajax({
            url: '/YourController/GetListingView',
            type: "GET",
            data: { "statusId": selectedStatusId },
            success: function (response) {
                $('#ListingView').html(response);
            }
        });
    });
    
  2. YourController:

    [HttpGet]
    public ActionResult GetListingView(int statusId)
    {
         ViewData["ListingView"] = your data filtered by statusId or what you want;
        return PartialView("List",ViewData["ListingView"]);
    }
    

Instead of ViewData["ListingView"] I would use dedicated model, but it's just an example. It should work.

Upvotes: 1

Related Questions