Передача созданных javascript флажков в контроллер для сохранения в tabel? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть флажки, которые создаются динамически из результатов поиска карт Google.Я хочу иметь возможность передать их на контроллер, чтобы они могли быть добавлены в базу данных, а затем запросить позже.

Прямо сейчас у меня есть представление для пользователя для поиска города, входные данные отправляются обратно в контроллер, чтобы создать новый вид для заполнения карты Google ближайшими местоположениями.Соседние местоположения добавляются динамически в <div>, используя javascript в качестве флажков.

Я пытался передать флажки как строковый массив и массив моего модельного класса.Я получаю результаты в контроллере только с использованием строки [], но затем не могу сохранить их в базе данных.

    [HttpPost]
    public IActionResult Itinerary(string[] destination)
    {
        foreach (var item in destination)
        {
            _context.Itinerary.Add(item);  // error: '"Argument 1: Cannot convert from 'string ' to NameSpace.Model.Itinerary"
        }

        _context.SaveChanges();
        return View();
    }

Флажки Javascript

function createMarkers(places) {
    var bounds = new google.maps.LatLngBounds();
    var placesList = document.getElementById('places');
    for (var i = 0, place; place = places[i]; i++) {
        var image = {
            url: place.icon,
            size: new google.maps.Size(71, 71),
            origin: new google.maps.Point(0, 0),
            anchor: new google.maps.Point(17, 34),
            scaledSize: new google.maps.Size(25, 25)
        };
        var marker = new google.maps.Marker({
            map: map,
            icon: image,
            title: place.name,
            animation: google.maps.Animation.DROP,
            position: place.geometry.location
        });

        var checkbox = document.createElement('input');
        checkbox.type = "checkbox";
        checkbox.name = "destination";
        checkbox.value = place.name;
        checkbox.id = "id";
        checkbox.setAttribute("asp-for","LocationName");


        var label = document.createElement('label')
        label.htmlFor = "id";
        label.appendChild(document.createTextNode(place.name));


        placesList.appendChild(label);
        placesList.appendChild(checkbox);

Форма Отправка отмеченных полей обратно в контроллер

@using (Html.BeginForm("Itinerary", "Itinerary", FormMethod.Post))
{ 

        <div multiple id="places" > </div>
        <button id="more">More results</button>

    <input type="submit" value="Finished"/>
}

1 Ответ

0 голосов
/ 19 февраля 2019

Как вы указали, ошибка находится в этой строке:

 _context.Itinerary.Add(item);  // error: '"Argument 1: Cannot convert from 'string ' to NameSpace.Model.Itinerary"

Вам необходимо создать Itinerary:

 _context.Itinerary.Add(new Itinerary { Destination = item });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...