2016-07-25 1 views
0

J'ai le code suivant dans le contrôleur:jQuery autocomplete ASP.Net ne fonctionne pas

public JsonResult FindProduct(string searchString) 
{ 
     var productsName = from c in db.Products 
          where c.ProductName.Contains(searchString) 
         select new { value = c.Barcode, label = c.ProductName }; 

     return this.Json(productsName, JsonRequestBehavior.AllowGet); 
} 

Et le code suivant à mon avis:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#productName").autocomplete({ 
      source: '<%= Url.Action("FindProduct") %>', 
      select: function (event, ui) { 
       var prodBarcode = ui.item.value; 
       $("#productName").val(ui.item.label); 
       $("#productBarcode").val(ui.item.value); 
       return false; 
      } 
     }); 
    }); 
</script> 

<div class="ui-widget"><input type="text" name="productName" id="productName" /></div> 

Pour une raison quelconque la FindProduct (chaîne searchString) est jamais appelé. Et la saisie semi-automatique ne fonctionne pas. Ai-je besoin d'autre chose dans mon script?

Répondre

-1

Cela me semble horriblement faux.

source: '<%= Url.Action("FindProduct") %>', 

Je ne sais pas si cela peut fonctionner, mais si je devais vérifier pourquoi votre méthode de serveur est jamais appelé, je vais définitivement commencer à partir de là.

Placez votre URL dans l'attribut source et ne mélangez pas le code du serveur et celui du client.

+0

Je suppose que vous n'avez jamais vu cette construction auparavant? C'est la méthode généralement acceptée dans asp.net MVC pour générer des URL d'action. C'est fait parce que si l'emplacement de l'action ou le routage change, le code JS n'a pas besoin d'être mis à jour. Et parfois, le routage exact doit être calculé par le serveur en fonction des règles spécifiées, il peut ne pas être facile à établir et à coder en dur. La plupart des gens conviennent que faire cela est mieux que de coder en dur l'URL pour les applications MVC. – ADyson