将javascript创建的复选框传递给控制器 以保存到表格?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将javascript创建的复选框传递给控制器 以保存到表格?相关的知识,希望对你有一定的参考价值。

我有从谷歌地图搜索结果动态创建的复选框。我希望能够将这些文件传递给控制器​​,以便将它们添加到数据库中,然后再查询。

现在我有一个用户搜索城市的视图,输入被发送回控制器以呈现新视图以填充附近位置的谷歌地图。附近的位置使用javascript作为复选框动态添加到<div>

我试图将复选框作为字符串数组和模型类的数组传递。我只使用string []在控制器中收到结果,但是我无法将它们保存到数据库中。

    [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"/>
}
答案

正如您所指出的那样,错误就在这一行:

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

你需要创建一个Itinerary

 _context.Itinerary.Add(new Itinerary { Destination = item });

以上是关于将javascript创建的复选框传递给控制器 以保存到表格?的主要内容,如果未能解决你的问题,请参考以下文章

将复选框值传递给 javascript 和 PHP 邮件

通过 knockout.js 将选中的复选框值传递给 javascript

在创建 onchange 的 javascript 中传递两个变量

将复选框的值传递给 asp.net mvc4 中的控制器操作

如何将选中的复选框值传递给另一个页面?

将复选框列表传递到视图中并拉出 IEnumerable [重复]