jQuery的自动完成ASP.Net不工作

问题描述:

我在控制器下面的代码:jQuery的自动完成ASP.Net不工作

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); 
} 

在我看来,下面的代码:

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

出于某种原因,查找产品信息(字符串搜索字符串)是从未打过电话自动填充不起作用。我的脚本中是否还需要其他内容?

这对我来说似乎是非常可怕的错误。

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

我不知道它是否能正常工作,但如果我不得不检查为什么你的服务器方法不会被调用,我会明确地从那里开始。

将整个网址放在源属性中,并且不要混合使用服务器和客户端代码。

+0

我假设你以前没见过这个构造?这是asp.net MVC中用于生成Action URL的普遍接受的方法。这是因为如果动作的位置或路由改变了,JS代码不需要更新。有时候,确切的路由需要由服务器端根据规定的规则进行计算,但这可能并不容易解决,并且难以编码。大多数人同意这样做比对硬编码MVC应用程序的URL更好。 – ADyson