2016-07-25 284 views
0

我在控制器下面的代碼: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> 

出於某種原因,查找產品信息(字符串搜索字符串)是從未打過電話自動填充不起作用。我的腳本中是否還需要其他內容?

回答

-1

這對我來說似乎是非常可怕的錯誤。

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

我不知道它是否能正常工作,但如果我不得不檢查爲什麼你的服務器方法不會被調用,我會明確地從那裏開始。

將整個網址放在源屬性中,並且不要混合使用服務器和客戶端代碼。

+0

我假設你以前沒見過這個構造?這是asp.net MVC中用於生成Action URL的普遍接受的方法。這是因爲如果動作的位置或路由改變了,JS代碼不需要更新。有時候,確切的路由需要由服務器端根據規定的規則進行計算,但這可能並不容易解決,並且難以編碼。大多數人同意這樣做比對硬編碼MVC應用程序的URL更好。 – ADyson