@Url.Action("AutoComplete", "City", "City")
должно быть
@Url.Action("AutoComplete", "City")
Третий используемый аргумент представляет значения маршрута, которые должны быть анонимным объектом, а не строкой. Что касается плагина автозаполнения, он использует строку запроса term
при выполнении запроса AJAX для извлечения данных. Поэтому вам также придется переименовать ваш параметр действия контроллера:
public ActionResult AutoComplete(string term)
{
var d = db.Cities
.Where(r => r.Name.Contains(term))
.Select(r => new { label = r.Name });
return Json(d, JsonRequestBehavior.AllowGet);
}
Также убедитесь, что на вашей странице есть ссылка на скрипт jquery-ui-1.8.11.min.js
(его не видно в примере кода).
Если это все еще не работает, убедитесь, что действие AutoComplete не вызывает исключение при выполнении запроса. Также посмотрите с помощью FireBug или Developer Tools, нет ли каких-либо ошибок javascript и правильно ли отправлен AJAX-запрос.