آموزش اجرای AutoComplete در MVC
دوشنبه 18 آبان 1394 1:19 PM
|
1
2
|
public int PersonId { get; set; } public string PersonName { get; set; } |
حالا رو یپوشه Controller کلیک راست کنید و گزینه Add سپس Controller را انتخاب کنید از لیست ظاهر شده Mvc 5 Controller With Views,Using Entity Framework را انتخاب کنید در پنجره Add Controller مدل خود را یعنی person را انتخاب کنید و بروی add کلیک کنید سپس برنامه را اجرا کنید و تعدادی نام به پروژه خود اضافه کنید سپس از منوی tools گزینه Nuget Package Manager و Manage Nuget Packages For Solution را انتخاب کنید و به قسمت آنلاین بروید و در سمت بالا سمت راست کلمه jQuery UI Autocomplete را جستجو کنید و( Jquery Ui (Combined Library را انتخاب و روی Install کلیک کنید و منتظر بمانید تا فایل های لازم به پروژه شما اضافه شود.سپس برنامه رو stop کنید به ویو Create بروید و فیلد PersonName را به شکل زیر تغییر دهید:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<div class="form-group"> @Html.LabelFor(model => model.PersonName, new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.TextBoxFor(Model => Model.PersonName,new{ @class = "autocomplete-with-hidden", data_url = Url.Action("GetListForAutocomplete", "People")}) @Html.HiddenFor(Model => Model.PersonId) @Html.ValidationMessageFor(model => model.PersonName) </div></div> |
در انتهای ویو اسکریپت زیر را بنویسید:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<script> $(function () { $('.autocomplete-with-hidden').autocomplete({ minLength: 0, source: function (request, response) { var url = $(this.element).data('url'); $.getJSON(url, { term: request.term }, function (data) { response(data); }) }, select: function (event, ui) { $(event.target).next('input[type=hidden]').val(ui.item.id); }, change: function (event, ui) { if (!ui.item) { $(event.target).val('').next('input[type=hidden]').val(''); } } }); })</script> |
توسط اسکریپت بالا از طریق json به کنترلر رفته عمل جستجو را انجام داده و نتیجه از نوع json پاس داده میشود حال به Controller خود رفته و یک تابع با فرمت json مینویسیم:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public JsonResult GetListForAutocomplete(string term) { Person[] matching = string.IsNullOrWhiteSpace(term) ? db.People.ToArray() : db.People.Where(p => p.PersonName.ToUpper().StartsWith(term.ToUpper())).ToArray(); return Json(matching.Select(m => new { id = m.PersonId, value = m.PersonName, label = m.ToString() }), JsonRequestBehavior.AllowGet); } |
حالا میتونید برنامه خود را اجرا کنید ودر ویوی Create در هنکام تایپ نام AutoComplete عمل خواهد کرد.