我的应用程序中有一个视图,允许用户设置2个多选。 问题是:如何将这些多选的内容发送回控制器。 到目前为止,我有:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<div id="member-list">
<div class="row" id="transfer">
<div class="col-md-6">
<select multiple="multiple" id="right-select">
@foreach (var item in Model.AnotherContacts)
{
<option value="@item.Id" onclick="transfer(this)">
@item.Email - @item.Name
</option>
}
</select>
</div>
<div class="col-md-6">
<select multiple="multiple" id="left-select">
@foreach (var item in Model.Group.Members)
{
<option value="@item.Contact.Id" onclick="transfer(this)">
@item.Contact.Email - @item.Contact.Name
</option>
}
</select>
</div>
</div>
</div>
<div class="col-md-3">
<input type="submit" class="btn btn-grey" value="Save" />
</div>
</div>
现在:如何编写一个控制器来获取项目列表,我在两个多选项中都有这个?
[HttpPost]
public ActionResult Manage(int id)
{
return View();
}
答案 0 :(得分:1)
首先要使表单发布成功,您需要在输入中添加名称属性。
<select multiple="multiple" id="left-select" name="leftSelect">
<select multiple="multiple" id="right-select" name="rightSelect">
那么你的控制器就是
[HttpPost]
public ActionResult Manage(int[] leftSelect, int[] rightSelect)
{
//your code
return View();
}
请注意,方法参数的名称与选择列表上的名称属性相同。
注意:我认为您的
@item.Contact.Id
和@item.Id
属于类型 中间体
答案 1 :(得分:0)
让控制器期望多个参数
[HttpPost]
public ActionResult Manage(int id, int id2)
{
//your code
return View();
}
这当然取决于您要发送给控制器的内容,但我希望您明白这一点。您还没有显示所需的代码,但我猜您有selectLists返回字符串,如果是这种情况,请更改Manage Action中的参数以期望字符串变量