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") %>',
我不知道它是否能正常工作,但如果我不得不检查为什么你的服务器方法不会被调用,我会明确地从那里开始。
将整个网址放在源属性中,并且不要混合使用服务器和客户端代码。
我假设你以前没见过这个构造?这是asp.net MVC中用于生成Action URL的普遍接受的方法。这是因为如果动作的位置或路由改变了,JS代码不需要更新。有时候,确切的路由需要由服务器端根据规定的规则进行计算,但这可能并不容易解决,并且难以编码。大多数人同意这样做比对硬编码MVC应用程序的URL更好。 – ADyson