Передача данных из View в Controller (я действительно не знаю, что это может быть) - PullRequest
1 голос
/ 04 июня 2019

Я хочу передать данные из представления в контроллер с помощью Html.beginform. Значение caregiverid равно нулю. Это должно работать, но я не знаю, что я делаю неправильно. Я также проверил имена переменных, но это то же самое.

Я также проверил, заполнена ли viewbag данными. Мешок с данными заполнен правильными данными.

Это вид

@using (Html.BeginForm("PairClient", "Admin", FormMethod.Post, new { @class = "col-md-12", caregiverid = ViewBag.caregiverid }))
{
    <select name="clientselect" class="selectpicker" data-live-search="true" data-actions-box="true" data-selected-text-format="count > 4" data-multiple-separator=" | " data-none-selected-text="Niks geselecteerd" data-deselect-all-text="Niks" data-select-all-text="Alles" data-count-selected-text="{0} clienten geselecteerd" data-width="100%" data-size="10" multiple>
        @foreach (var client in Model)
        {
            <option style="font-size:15px;" value="@client.ClientId" selected="@(client.IsSelected ? "selected" : null)" data-tokens="@client.Email">@client.SocialNumber - @client.Firstname @client.Lastname</option>
        }
    </select>
    <input class="btn btn-success " type="submit" value="Koppel cliënt" />
}

Это контроллер


[HttpPost]
public IActionResult PairClient(string caregiverid, string[] clientselect)
{
    string token = Request.Cookies["userToken"];
    admin.PairClient(token, caregiverid, clientselect);
    return RedirectToAction("Singlecaregiver");
}

Это сработало! Я не знаю, что я изменил ... но как-то это сработало

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Привет! Я попробовал ваш код, просто немного его изменил и сумел перенести данные на контроллер, поэтому, пожалуйста, просто скопируйте и вставьте следующий код, и все будет хорошо

HTML

@using WebApplication1.Models;
@model IReadOnlyCollection<Client>`@{
ViewBag.Title = "Index";
}
<h2>Index</h2>`
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "col-md-12" }))
{ 
<select name="clientselect" class="selectpicker" data-live-search="true" data-actions-box="true" data-selected-text-format="count > 4" data-multiple-separator=" | " data-none-selected-text="Niks geselecteerd" data-deselect-all-text="Niks" data-select-all-text="Alles" data-count-selected-text="{0} clienten geselecteerd" data-width="100%" data-size="10" multiple>
       @foreach (var client in Model)
    {
        <option style="font-size:15px;" value="@client.ClientId" selected="@(client.IsSelected ? "selected" : null)" 
                data-tokens="@client.Email">@client.SocialNumber - @client.Firstname @client.Lastname</option>
    }
    </select>
<input type="hidden" name="caregiverid" id="caregiverid" value="@ViewBag.caregiverid" />
<input class="btn btn-success " type="submit" value="Koppel cliënt" />
}

enter image description here Это изображение контроллера, который я добавил в проект, и, как вы можете видеть, значение caregiverid равно 1, и выбраны два клиента. надеюсь, что это решило вашу проблему.

Но я рекомендую вам перейти с этого кода в контроллере на что-то похожее на это enter image description here

0 голосов
/ 04 июня 2019

Попробуйте добавить скрытый тег HTML, например.

<input type="hidden" name="caregiverid" id="caregiverid" value="@ViewBag.caregiverid"/>

В вашем контроллере вы ожидаете массив строк выбранного клиента, но являются ли данные в поле выбора массивом?

Попробуйте установить атрибут «несколько» в элементе select или запишите каждый выбор в скрытое поле с помощью и опубликуйте его, чтобы убедиться, что каждый элемент имеет то же имя, что и сигнатура метода. например.

<input type="hidden" name="clientselect"/>

Также на вашем контроллере обновите его и попробуйте

public IActionResult PairClient([FromForm] string caregiverid, [FromForm] string[] clientselect)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...