У меня есть флажки, которые создаются динамически из результатов поиска карт 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"/>
}