Как я могу отправить список объектов на мой контроллер? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь отправить список объектов контроллеру, но контроллер всегда получает его как ноль.

     var model= @Html.Raw(Json.Encode(Model.MultipleElements));
        jQuery.ajax({
            type: 'GET',       
            contentType: 'application/json',
            url: '@Url.Action("AddField", "Flux")',

            data: model,
            success: function (response) {
                $(".destinationMultiple").html(response);
            }
        });

А вот мое действие контроллера

   public PartialViewResult AddField(List<Destination> model)
    {

        return PartialView("_myPartialView");
    }

1 Ответ

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

Вы можете использовать Ajax.Beginform.Если вы хотите, вы можете сделать следующее, объясняющее, как передавать массивы из View в Controller.

View / Controller

namespace Testy20161006.Controllers
{
    public class Destination
    {
        public string aDestination { get; set; }
    }

    public class TahtohViewModel
    {
        public List<Destination> MultipleElements { get; set; }
    }

    public class HomeController : Controller
    {
        [HttpPost]
        public PartialViewResult AddField(List<Destination> MultipleElements)
        {
            List<String> sendout = new List<string>();
            foreach (Destination dest in MultipleElements)
            {
                sendout.Add(dest.aDestination);
            }
            ViewBag.SendoutList = sendout;
            return PartialView("_myPartialView");
        }

        public ActionResult Tut149()
        {
            Destination dest1 = new Destination { aDestination = "adest1" };
            Destination dest2 = new Destination { aDestination = "adest2" };
            Destination dest3 = new Destination { aDestination = "adest3" };
            TahtohViewModel tahtoViewModel = new TahtohViewModel { MultipleElements = new List<Destination>() };
            tahtoViewModel.MultipleElements.Add(dest1);
            tahtoViewModel.MultipleElements.Add(dest2);
            tahtoViewModel.MultipleElements.Add(dest3);
            return View(tahtoViewModel);
        }

View

@model Testy20161006.Controllers.TahtohViewModel
@using Testy20161006.Controllers
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Tut149</title>
    <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#theButton").click(function () {
                var items = [];
                var q = $("input[name='theElemsName']");
                $.each(q, function (index, thevalue) {
                    var item = {};
                    item.aDestination = thevalue.value;
                    items.push(item);
                });

                jQuery.ajax({
                    type: 'POST',
                    contentType: 'application/json',
                    url: '@Url.Action("AddField", "Home")',
                    data: JSON.stringify(items),
                    success: function (response) {
                        //alert("success");
                        $(".destinationMultiple").html(response);
                    }
                });
            })
        })
    </script>
</head>
<body>
    <div>
        <table>
            @{ var index = 0;}
            @foreach (Destination item in Model.MultipleElements)
            {
                <tr><td>Item <span>@(index++)</span></td><td data-multipleelements="@(index)">@Html.TextBox(item.aDestination, null, new { Name = "theElemsName", Value = item.aDestination })</td></tr>
            }
        </table>
        <input type="button" id="theButton" value="Add Field" />
        <div class="destinationMultiple"></div>
    </div>
</body>
</html>

Partial View

my partial view
@foreach (string item in ViewBag.SendoutList)
{
    <div>@item</div>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...