Я пытался создать текстовое поле автозаполнения в cshtml, я пробовал следующий код, но он не работает.У части контроллера нет ошибок во время отладки, не уверен, какую часть я пропустил.Благодарим за любую помощь.
Контроллер
[HttpPost]
public JsonResult Index(string Prefix)
{
//Note : you can bind same list from database
List<CardHolderDetails> ObjList = new List<CardHolderDetails>()
{
new CardHolderDetails {CardId=1,UnitNo="Latur" },
new CardHolderDetails {CardId=2,UnitNo="Mumbai" },
new CardHolderDetails {CardId=3,UnitNo="Pune" },
new CardHolderDetails {CardId=4,UnitNo="Delhi" },
new CardHolderDetails {CardId=5,UnitNo="Dehradun" },
new CardHolderDetails {CardId=6,UnitNo="Noida" },
new CardHolderDetails {CardId=7,UnitNo="New Delhi" }
};
//Searching records from list using LINQ query
var CityList = (from N in ObjList
where N.UnitNo.StartsWith(Prefix)
select new { N.UnitNo });
return Json(CityList, JsonRequestBehavior.AllowGet);
}
CSHTML
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#UnitNo").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Home/Index",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.UnitNo, value: item.UnitNo };
}))
}
})
},
messages: {
noResults: "", results: ""
}
});
})
</script>
@using (Html.BeginForm())
{
<div class="form-group">
@Html.EditorFor(model => model.UnitNo, new { htmlAttributes = new { @class = "form-control", id = "UnitNo" } })
</div>
}
Возвращаемое значение не отображается в форме автозаполнения.