Jquery 选择2个已输入的过账值

Jquery 选择2个已输入的过账值,jquery,asp.net,asp.net-mvc,jquery-select2,select2,Jquery,Asp.net,Asp.net Mvc,Jquery Select2,Select2,我在我的asp.NETMVC网站中使用了select2,并使它可以用于html。然而,我发现很难找到一种方法来检索用户在点击提交时输入的值。一旦进入@using Html.BeginForm元素,select2就不再工作,只显示为默认值。我尝试过本教程,但它对我不起作用: 以下是我目前拥有的和我尝试过的: @model AssignerWebTool.Models.CreateUserModel @{ ViewBag.Title = "Create User"; } <select id=

我在我的asp.NETMVC网站中使用了select2,并使它可以用于html。然而,我发现很难找到一种方法来检索用户在点击提交时输入的值。一旦进入@using Html.BeginForm元素,select2就不再工作,只显示为默认值。我尝试过本教程,但它对我不起作用:

以下是我目前拥有的和我尝试过的:

@model AssignerWebTool.Models.CreateUserModel
@{
ViewBag.Title = "Create User";
}
<select id="select" class="select" multiple="multiple"> //This works but I have no way of getting the values entered
<option></option>
</select>

<h2>Create User</h2>
@using (Html.BeginForm("Create", "user", FormMethod.Post, new { @class = "select", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Create a new account.</h4>
<hr/>
@Html.ValidationSummary("", new {@class = "text-danger"})
<div class="form-group">
    @Html.LabelFor(m => m.Email, new {@class = "col-md-2 control-label"})
    <div class="col-md-10">
        @Html.TextBoxFor(m => m.Email, new {id = "select" }) //This does not work and does not select2

        <select id="select" class="select" multiple="multiple"> //Also does not work now inside of here
            <option></option>
        </select>
    </div>
</div>

<div class="form-group">
    <div class="col-md-offset-2 col-md-10">
        <input type="submit" class="btn btn-default" value="Create User"/>
    </div>
</div>


}

@section scripts
{
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>
<script>
    $(function () {

        $("#select").select2({
            placeholder: "Email address(es)",
            tags: true,
            tokenSeparators: [',', ' ']
        });
    });
</script>
}

根据评论,我们调整了以下内容:

-只有一个id为select的元素通过JQuery被选中,以启用的Select2功能

-使用用于v4.0.x的select2.full.js库,以实现v3.5.x的完全向后兼容性

对于要在Select2 v4.0.x中使用的问题代码示例字段中生成的via@Html.TextBoxFor,似乎存在对v4.0.0 RC1的“有限支持”限制列表,其中包括不起作用的标记和令牌分隔符

不要使用html助手生成的输入字段-使用选择字段,因为建议将其与Select2一起使用请参见v4.0.0的发行说明,并确保该字段位于表单中,并且将name属性设置为模型的属性,如果您想加载控制器通过模型传递的值,那么也可以循环这些值:

<select id ="select" name="Email" class="select" multiple="multiple">
    @{foreach (var item in Model.Email)
        {
            <option>@item </option>
        }
    }
</select>
您也可以直接在自动生成的id上调用Select2:

$("#Email").select2({
以及在userController中处理已发布表单:

[HttpPost]
public ActionResult Create(CreateUserModel model)
{
  ...
通过模型绑定,这不是唯一的方法,但我推荐


希望这一切都有帮助

当您尝试上面的代码时,除了您当时正在尝试的选择尝试之外,您是否放弃了其他选择尝试?您有3个id=select的元素,运行select2的jquery只对它找到的第一个元素起作用。请通过注释第一个选项再试一次,看看下一个选项是否有效。这确实解决了我遇到的一个问题,并且有意义。尽管如此,我仍然无法让它在@Html.TextBoxFor元素中工作,即使我只是在其上使用id=select。有什么建议吗?我试图复制,但我意识到我不确定您对TextBoxFor有什么问题。我遇到的唯一问题是在使用完整的js库时解决的:select2.Full.min.js-不确定是否要尝试。问题是什么,它是在没有呈现jquery控件的情况下悄无声息地失败,还是出现了错误?是的,我尝试过了,它至少变成了一个select2框。我现在遇到的问题是,它只是使用默认的SELECT2,标记和令牌分隔符不起作用,而占位符却起作用。textboxfor上可能不支持它们吗?谢谢你的帮助,我不太担心为下拉列表传递值,我更希望在输入值时对其进行标记,如本例所示:除非我遗漏了什么,否则这似乎不可能实现?如果我使用提交表单时是否有方法传递输入的值?如果找到了,可以从,选择中获取数据。元素使用请求。表单[电子邮件]。谢谢你帮了我大忙。
[HttpPost]
public ActionResult Create(CreateUserModel model)
{
  ...