Я использую функцию автозавершения jQuery, в которой значение должно храниться в массиве java-скриптов. Я создал функцию, которая дает список с объектами, которые содержат user_id и user_name. Как преобразовать его в массив.
public class DocModel
{
[Required]
public String dr_name { get; set; }
[Required]
public int dr_id { get; set; }
public List<DocModel> GetUser()
{
SqlDataReader sdr = DataAccess.DataAccess.getAllDoctorNames();
List<AECS1.Models.DocModel> DocList = new List<Models.DocModel>();
Models.DocModel Doc;
if (sdr.HasRows)
{
while (sdr.Read())
{
Doc = new Models.DocModel();
Doc.dr_id = (int)sdr["dr_id"];
Doc.dr_name = (string)sdr["dr_name"];
DocList.Add(Doc);
}
}
return DocList;
}
}
Это страница просмотра:
$(function () {
var docdata = [];
$("#tags").autocomplete({
source: docdata
});
});
Как заполнить этот массив docdata?
Добавьте метод к вашей модели под названием ToJSON & используйте конвертер JavaScript - либо встроенный, либо даже лучше, JSON.net, и этот метод возвращает строку, закодированную json, представляющую ваш массив.
<script>
var docdata = @Model.ToJson();
</script>
Если вам не нравится иметь метод в вашей модели, выполните преобразование JSON при заполнении вашей модели.
Пропустить DocModels для просмотра в качестве модели.
@model IEnumerable<DocModel>
А потом
<script>
var docdata = [
@foreach(var item in Model)
{
@: '@item.dr_name',
}
];
</script>