2017-10-06 9 views
0

Comment transmettre des paramètres qui référencent d'autres éléments de l'interface utilisateur (tels que les valeurs de zone de texte, les boutons radio, etc.) au contrôleur appelé pour extraire les données saisie semi-automatique?kendo ui autocomplete - comment passer les paramètres à la méthode du contrôleur pour filtrer les résultats

par ex. à partir de l'exemple dans les docs, lorsque j'appelle l'action GetProducts du contrôleur Home, comment puis-je envoyer certains paramètres avec l'appel?
Ou encore mieux, publier un objet json qui contient des valeurs référençant les données de 2-3 autres widgets dans l'interface utilisateur?
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. 
     }) 
    ) 
+0

-Bitshift: - Avez-vous eu la chance de regarder dans la réponse? Je me demandais juste parce que votre dernier statut est 0h37 –

Répondre

0

Vous pouvez transmettre des données supplémentaires soit en utilisant des valeurs route objet Par ex

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

OU via la méthode des données,

qui spécifie une fonction JavaScript, qui renvoie les paramètres supplémentaires. E.g.

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

function additionalInfo() { 
    return { 
    name: "test", 
    id: 2 
    } 
} 
délégué

ou Via Modèle

//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>)) 

Dans tous les cas, vous devez ajouter des paramètres supplémentaires à votre action. E.g.

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

Oui, j'avais vu cet exemple et c'était à cela que je faisais allusion. Ma question concerne la signature de l'action. Au lieu de passer le nom, l'id etc., ces paramètres "extra" peuvent-ils être passés comme un seul objet JSON? De cette façon, je n'ai pas besoin de changer la signature de la méthode lorsque plus de données doivent être transmises. – bitshift

+1

ok, vous pouvez recevoir des données dans un objet. le nom devrait correspondre exactement. J'ai fait face au même scénario et cela a fonctionné pour moi. le nom des propriétés dans la classe et l'instruction return doivent être identiques. –