kendo ui autocomplete - 如何将参数传递给控制器​​方法以过滤结果

时间:2017-10-06 20:10:17

标签: asp.net-mvc kendo-asp.net-mvc

如何将引用UI中其他元素的参数(例如文本框值,单选按钮等)传递给被调用以获取自动完成数据的控制器?

例如。从文档中的示例来看,当我调用Home控制器GetProducts操作时,如何将这些参数与调用一起发送?
或者甚至更好,发布一个json对象,其中包含引用ui中其他2-3个小部件的数据的值   https://docs.telerik.com/aspnet-mvc/helpers/autocomplete/overview#ajax-binding

  @(Html.Kendo().AutoComplete()
      .Name("productAutoComplete") //The name of the AutoComplete is mandatory. It specifies the "id" attribute of the widget.
      .DataTextField("ProductName") //Specify which property of the Product to be used by the AutoComplete.
      .DataSource(source =>
       {
          source.Read(read =>
          {
               read.Action("GetProducts", "Home"); //Set the Action and Controller names.
          })
          .ServerFiltering(true); //If true, the DataSource will not filter the data on the client.
       })
    )

1 个答案:

答案 0 :(得分:0)

您可以使用对象路由值传递其他数据 E.g。

.Read(read => read.Action("Products_Read", "Home", new { name = "test", id = 2 }))

OR 通过数据方法,

指定一个JavaScript函数,它将返回其他参数。 E.g。

.Read(read => read.Action("Products_Read", "Home").Data("additionalInfo"))

 function additionalInfo() {
  return {
    name: "test",
    id: 2
  }
 }

或通过模板代表

  //By Template Delegate
  Read(read => read.Action("Products_Read", "Home").Data(@<text>
        function() {
            //pass parameters to the Read method
            return {
                name: "test",
                id: $("#search").val()
            }
        }
          </text>))   

在所有情况下,您都应该为Action添加其他参数。 E.g。

 public ActionResult Products_Read([DataSourceRequest] DataSourceRequest request, string name, int id) {...}