2013-04-05 2 views
1

После помощи от ответа я изменил мой кодurl.action для автозаполнения

@Html.TextBoxFor(per => per.Hospital, new { style = "width:220px", @maxlength = "50", data_autocomplete = Url.Action("HospitalList", "Person") }) 

Мой JQuery является

$(document).ready(function() {   
    $('input[data_autocomplete]').each(function() { 
     var url = $(this).data('autocomplete'); 
     $(this).autocomplete({ 
      source: function (request, response) { 
       $.getJSON(url, { 
        term: request.term 
       }, response); 
      } 
     }); 
    }); 
}); 

И создал новый результат Экшены

public ActionResult HospitalList(string term) 
    { 
     List<string> result = new List<string>(); 
     result.Add("Hospital 1"); 
     result.Add("NYUMC"); 
     result.Add("Christ"); 
     result.Add("Bellevue"); 
     result.Add("NewYork-Presbyterian"); 
     result.Add("North Central Bronx Hospital");    

     return Json(result , JsonRequestBehavior.AllowGet); 
    } 

теперь, где я иду wromg. Все, что я вижу в текстовом поле, не работает автоматически. Должен ли я включать любую библиотеку jquery для ее работы?

+1

Что вы используете для автоматического завершения? Пользовательский интерфейс jQuery? –

+0

Я не использую ничего, я просто пытаюсь заставить textboxfor вести себя как автоматическое завершение. Я очень новичок в MVC и jquery. Все, что я сделал, перечислено выше. – DotNetBeginner

+0

В 'HTML' нет функции автозаполнения. Если вы хотите использовать его, вам придется использовать плагин. Автозаполнение jQuery UI является таким плагином. Вам нужно ссылаться на jquery.js и 'jquery-ui.js' на ваш взгляд. Вы также должны прочитать небольшую документацию, чтобы ознакомиться с некоторыми базовыми javascript. –

ответ

0

Вы не указали, какой плагин автозаполнения вы используете. Если это jQuery UI autocomplete вы могли вернуть отфильтрованные результаты в формате JSON от вашего действия контроллера:

[HttpGet] 
public ActionResult PersonSearch(string term) 
{ 
    // The term parameter will contain the value entered by the user in the textbox. 
    // here you could use it and query your database in order to filter the results. 
    string[] result = new string[] 
    { 
     "filtered value 1", 
     "filtered value 2", 
     "filtered value 3", 
     "filtered value 4", 
    }; 

    return Json(result, JsonRequestBehavior.AllowGet); 
} 

И, наконец, вы бы прикрепить плагин:

$(function() { 
    $('input[data-autocomplete]').each(function() { 
     var url = $(this).data('autocomplete'); 
     $(this).autocomplete({ 
      source: function(request, response) { 
       $.getJSON(url, { 
        term: request.term 
       }, response); 
      } 
     }); 
    }); 
}); 

Обратите внимание, как действие контроллера принимает параметр term и должен возвращать список строк как JSON.

+0

Здравствуйте, Darin благодарит за ответ. Если вы видите мой контроллер выше, я возвращаю представление теперь на основании того, что вы объяснили, я должен вернуть Джейсона, как я могу вернуться к просмотру и Джейсону вместе. Я не использовал никаких плагинов автозаполнения. – DotNetBeginner

+0

Вы не можете одновременно возвращать JSON и представление. Это не имеет смысла. Чтобы использовать плагин автозаполнения jQuery UI, убедитесь, что вы включили на свою страницу первые скрипты jquery.js, а затем jquery-ui.js'. Наконец, вы можете использовать '.autocomplete' в своем пользовательском скрипте. –

+0

Спасибо Дарьяну, я наконец-то заработал ... – DotNetBeginner