How to send an object to the Telcik MVC Grid Ajax Select () controller method

I am using a Telerik MVC grid with Ajax binding and I have a problem with passing the object to the controller, which will be used to filter the data. I can pass simple data (string, int), but no more complex object.

For example, I can handle this:

.DataBinding(dataBinding => dataBinding.Ajax().Select("_CasesAjaxBinding", "Home", new {orderId = "12345"} ))

And then in my controller handle orderId as follows:

public ActionResult _CasesAjaxBinding(string orderId)

The problem I encountered is when I try to pass a more complex object (in this case @Model) to the controller, for example (@Model - type CaseFilterModel):

.DataBinding(dataBinding => dataBinding.Ajax().Select("_CasesAjaxBinding", "Home", new {filterSpec = @Model} ))

And then, trying to process the object, like this:

public ActionResult _CasesAjaxBinding(CaseFilterModel filterSpec)

The filterSpec parameter is always zero.

Thanks in advance for any ideas!

+5
source share
2

Telerik . , . .

, , .

, . .

, , () . onDataBinding:

<%= Html.Telerik().Grid<Order>()
        .Name("Grid")
        .ClientEvents(events => events.OnDataBinding("onDataBinding"))
        .DataBinding(dataBinding => dataBinding.Ajax()
                                               .Select("_AjaxBinding", "Grid"))
%>

URL-. : (int) ().

<script type="text/javascript">

    function onDataBinding(e) {
        var orderId = 100;
        var searchText = "test";
        var params = { OrderId: orderId, ArticleDescription: searchText };
        var paramsStr = $.param(params);
        var selectUrl = "<%= @Url.Action("_AjaxFilterBinding", "Grid") %>" 
            + "?" + paramsStr;
        var grid = $('#Grid').data('tGrid');
        grid.ajax.selectUrl = selectUrl;
    } 

</script>

select :

[GridAction]
public ActionResult _AjaxFilterBinding(AjaxFilterBindingModel model)
{
    // Retrieve data here and filter it based upon the data present in the model.
    var data = ...;

    return View(new GridModel<Order> { Data = data });
}

:

public class AjaxFilterBindingModel
{
    public int OrderId { get; set; }
    public string ArticleDescription { get; set; }
}

URL (GET) . , , .

:

public class AjaxFilterBindingModel
{
    public IEnumerable<int> OrderIds { get; set; }
    public string ArticleDescription { get; set; }
}

JavaScript :

    function onDataBinding(e) {
        jQuery.ajaxSettings.traditional = true;
        var intArray = [1, 2, 3, 4, 5];
        var params = {  OrderIds: intArray, ArticleDescription: "Test" };
        var paramsStr = $.param(params);
        var selectUrl = "<%= @Url.Action("_AjaxFilterBinding", "Home") %>" + "?" 
            + paramsStr;
        var grid = $('#Grid').data('tGrid');
        grid.ajax.selectUrl = selectUrl;
    }

. "jQuery.ajaxSettings.traditional = true;" , ASP.NET MVC .   

, Telerik, :

http://www.telerik.com/community/forums/aspnet-mvc/grid/getting-the-model-object-in-a-custom-binding-grid-ajax-controller.aspx

:

http://www.telerik.com/community/forums/aspnet-mvc/grid/code-sample-sending-additional-filters-with-ajax-binding.aspx

+19

, Razor... ,

var selectUrl = "<% = @Url.Action(" _ AjaxFilterBinding "," ")% > " + "?" + paramsStr;


var selectUrl = "@Url.Action(" _ AjaxFilterBinding "," ")" + "?" + paramsStr;

Razor... , , _AjaxFilterBinding . , , - .

, :)

+1

All Articles