我想使用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");
}
成功了!我不知道我已经改变了什么...但是以某种方式起作用了
答案 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" />
}
这是我添加到项目中的控制器的图像,如您所见,caregiverid设置为1,并且已选择两个客户端。希望这能解决您的问题。