Передача объекта из JS скрипта на сервер ASP.NET.MVC 5

253
20 сентября 2017, 09:17

Академическая задача, есть модель 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);
});
});

Вот такой интерфейс:

READ ALSO
Подсчет строк в datatable с условием

Подсчет строк в datatable с условием

Есть datatable, в нем несколько колонокОдна из них "Flag"

227
Хранимая процедура из кода c# в EF(Code First)?

Хранимая процедура из кода c# в EF(Code First)?

Есть контекст данных и инициализатор данных,

297
c# oracle procedure

c# oracle procedure

Я пытаюсь получит данные из этого функции но получаю ошибку

265
Как прочитать ответ от сервера

Как прочитать ответ от сервера

Отправляю запрос на API сайта, подобного вида :

239