Я реализую автозаполнение jQuery в текстовом поле, и мне любопытно, будет ли мой код выглядеть правильно.вернуть список <> из модели в EF MVC3
Это мое текстовое поле с моего экрана.
<div class="editor-field">
@Html.TextBoxFor(model => model.Customer.CustomerName,
new {id = "CustByName" })
</div>
javascript для реализации автозаполнения для идентификатора текстового поля.
$(document).ready(function() {
$("#CustByName").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Cases/FindByName", type: "GET", dataType: "json",
data: { searchText: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.CustomerName,
value: item.CustomerName,
id: item.CustomerID }
}))
}
})
}
});
});
Здесь действие контроллера вызывается JavaScript:
public JsonResult FindByName(string searchText, int maxResults)
{
CustomerFind find = new CustomerFind();
var result = find.FindCustomerByName(searchText, maxResults);
return Json(result);
}
Вот функция в CustomerFind называется FindCustomerByName:
internal List<Models.Customer>
FindCustomerByName(string searchText, int maxResults)
{
List<Models.Customer> cust = new List<Customer>();
var result = from c in cust
where c.CustomerName.Contains(searchText)
orderby c.CustomerName
select c;
return result.Take(maxResults).ToList();
}
Вот что у меня есть в моем макета cshtml файл для справки сценария ,
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/jquery-ui.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/rls-functions.js")" type="text/javascript"></script>"
Все, кажется, работает нормально, за исключением запроса LINQ в FindCustomerByName
не возвращает никаких записей, даже если они существуют.
Может ли кто-нибудь предложить, что может быть проблемой, или предложить лучший способ сделать автозаполнение?
Я рассмотрел многочисленные примеры и собрал это вместе.
Вы отлаживаете это? ** (1) ** Установите точку останова в методе действия 'findbyname' и посмотрите, не получили ли он правильные аргументы. ** (2) ** Используйте firebug + firefox или Chrome (нажмите F12). Проверьте сеть, чтобы убедиться, что запрос и ответ сформированы правильно. – gideon
Смотрите здесь: http://www.shahnawazk.com/2010/07/jquery-ui-autocomplete-widget-with.html или здесь http://carlhoerberg.com/how-to-use-jqueryu-ui-autocomplete -with-aspnet –
Привет, гидеон, метод действия findbyname получает правильные аргументы. Кажется, что FindCustomerByName LINQ не работает. Javascript запускается с помощью текстового поля, и он отлично добирается до FindByName, но перечисление не возвращает никаких результатов в FindCustomerByName. Я проверил, что есть данные, соответствующие поисковому тексту. – Ryan