0

我的 MVC 4 应用程序中有一个自动完成功能,它连接到世界上所有城市的数据库(所以你可以想象它非常大)。它在 PC 上运行良好,但是当我在智能手机上访问该网站时,加载需要 3 秒,而且性能变得非常缓慢。使用 Ajax 或 JSON 会使其更快吗?这是代码(我正在使用来自复数教程的代码):

部分视图 + Javascript

<!--Searching through all the hotel locations -->
<p>Hotel Location (City): @Html.TextBoxFor(x => x.booking_instance.Location, 
   new { data_autocomplete = @Url.Action("QuickSearch", "Booking") })</p>

<script type="text/javascript">
$(document).ready(function () {        
    $(":input[data-autocomplete]").each(function () {
        $(this).autocomplete({ source: $(this).attr("data-autocomplete") }); 
    });
  }); 
</script>

控制器

// this is my database of cities.
TE_TSQL1_HBOSDataContext _db = new TE_TSQL1_HBOSDataContext(); 
public ActionResult QuickSearch(string term)
{
 var cities = _db.Cities
      .Where (r => r.CityName.Contains(term))
      .Select(r => new { label = (r.CityName + ", " + r.CountryName) });
 return Json(cities, JsonRequestBehavior.AllowGet); 
}
4

1 回答 1

1

是的!使用 Jquery 和 Ajax 肯定会让您的手机更快,因为您不必将完整的数据集加载到手机内存中然后搜索它。您可以让 C# 服务器进行选择,然后只返回您想要的数据。最好的部分是,您的服务器已经在返回 JSON 结果,您可以让移动设备在输入 2 个字符后进行第一次查询,从而极大地限制了返回的数据集的大小。

        $( ":input[data-autocomplete]" ).autocomplete({
            source: "controllerPath/QuickSearch",
            minLength: 2

        });
于 2012-06-04T06:44:03.147 回答