ASP MVC 6:发送multiselectselect作为POST

时间:2016-06-25 14:20:42

标签: asp.net asp.net-mvc razor

我的应用程序中有一个视图,允许用户设置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();
    }

2 个答案:

答案 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中的参数以期望字符串变量