Академическая задача, есть модель People и временный репозиторий наполненный фейковыми данными. При передачи в браузер я сериализую в JSON модель и вывожу в multiselect list в котором хочу сделать функцию добавления объекта, после чего обновлять модель на сервере. Не могу реализовать обратную передачу нового объекта в модель. Так же не знаю как реализовать поиск по модели, а не по фильтру. Сейчас поиск происходит на стороне клиента. В проекте подключен JQuery, Bootstrap в _Layout.cshtml Собственно модель:
public class People
{
public int PeopleId { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public string Address { get; set; }
public string Country { get; set; }
}
Интерфейс репозитория:
public interface IPeopleRepository
{
IEnumerable<People> Peoples { get; set; }
}
DI Ninject
private void AddBindings()
{
// Здесь размещаются привязки
// В данном случае использую временное хранилище
Mock<IPeopleRepository> mock = new Mock<IPeopleRepository>();
mock.Setup(p => p.Peoples).Returns(new List<People>
{
new People { PeopleId = 1, Name="Oleg", LastName="Bulkin", City = "Moscow", Address="Russkaya 16", Country = "Russian Federation" },
new People { PeopleId = 2, Name="Petr", LastName="Ivanov", City = "Krasnodar", Address="Naberejnaya 20", Country = "Russian Federation" },
new People { PeopleId = 3, Name="Ad", LastName="Hook", City = "Cupertino", Address="Provency Street 12", Country = "USA" },
new People { PeopleId = 4, Name="John", LastName="Karmak", City = "Phoenix", Address="Advanced Street 55", Country = "USA" },
new People { PeopleId = 5, Name="John", LastName="Romero", City = "Phoenix", Address="Advanced Street 56", Country = "USA" },
new People { PeopleId = 6, Name="Kioshi", LastName="Yamamoto", City = "Kioto", Address="Mioko 33", Country = "Japan" },
new People { PeopleId = 7, Name="Sitoko", LastName="Mioto", City = "Tokio", Address="Yamashi 89", Country = "Japan" },
new People { PeopleId = 8, Name="James", LastName="Van", City = "Liverpool", Address="West road street 15", Country = "Great Britain" },
new People { PeopleId = 9, Name="Aizek", LastName="Okoronkvo", City = "Manchester", Address="Qween street", Country = "Great Britain" },
new People { PeopleId = 10, Name="Michael", LastName="JetHook", City = "London", Address="Common street 11", Country = "Great Britain" },
});
kernel.Bind<IPeopleRepository>().ToConstant(mock.Object);
}
Контроллер:
public class PeopleController : Controller
{
private IPeopleRepository _repository;
public PeopleController(IPeopleRepository repository)
{
_repository = repository;
}
public ViewResult List()
{
return View(_repository.Peoples);
}
}
Вьюшка с сериализацией:
@using Domain.Entities
@using Newtonsoft.Json
@model IEnumerable<People>
@{
ViewBag.Title = "Peoples";
}
<script type="text/javascript">
var peoples = @Html.Raw(JsonConvert.SerializeObject(Model));
for (var i = 0; i < peoples.length; i++) {
peoples[i].toString = function() {
return this.Name;
}
}
</script>
Скрипт:
$(document).ready(function () {
var dsl = $('#dualSelectExample').DualSelectList({
'candidateItems': peoples,
'selectionItems': []
});
// добавление, не работает
$('#addSel').click(function () {
var items = $('#addIterms').val().split('\n');
var res = dsl.setCandidate(items);
});
});
Вот такой интерфейс: