2012-06-04 174 views
0

我有一個自動完成在我的MVC 4應用程序連接到世界上所有城市的數據庫(所以你可以想象它的相當大)。它可以在個人電腦上正常工作,但是當我在智能手機上訪問網站時,加載需要3秒鐘,性能變得非常低。使用Ajax或JSON會更快嗎?我一直只在MVC和web上編程一個月,所以請和我一起裸照。下面的代碼(我使用的代碼從pluralsight教程):jQuery的自動完成在ASP.net真的很慢MVC 4移動

查看+的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); 
} 

回答

1

是的!使用Jquery和Ajax將使你的手機更加快速,因爲你不必將完整的數據集加載到手機內存中,然後搜索它。您可以讓C#服務器執行select操作,然後只返回所需的數據。最好的部分是,您的服務器已經返回JSON結果,並且您可以讓移動設備在輸入2個字符後進行第一次查詢,這極大地限制了返回的數據集的大小。

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

     }); 
+0

完美!奇蹟般有效 :)。你知道我可以真正理解AJAX和JSON嗎? (最好在MVC環境中,但如果不是那樣的話)!我知道他們應該做什麼,但我沒有完全掌握何時以及如何使用它們。 –