将数据从View传递到Controller(我真的不知道该怎么办)

时间:2019-06-04 13:04:33

标签: c# asp.net-mvc

我想使用Html.beginform将数据从视图传递到控制器。 caregiverid为空。这应该可以,但是我不知道我做错了什么。我还检查了变量名,但是相同。

我还测试了是否在视图包中填充了数据。视图包中填充了正确的数据。

这是视图

@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 :(得分:0)

尝试添加隐藏的HTML标签,例如。

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

在控制器中,您希望选择一个客户端字符串数组,但是select字段中的数据是数组吗?

尝试在select元素上设置“ multiple”属性,或者将每个选择都写入一个隐藏字段并张贴,以确保每个元素都具有与方法签名相同的名称。例如。

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

还可以在控制器上将其更新为该值并尝试

public IActionResult PairClient([FromForm] string caregiverid, [FromForm] string[] clientselect)

答案 1 :(得分:0)

嗨,我尝试了您的代码,并对其进行了一些修改,并设法将数据移至控制器,因此,只需复制粘贴以下代码即可,一切都会很好

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类似的内容