搜索用户

时间:2018-05-31 06:41:14

标签: javascript c# asp.net-mvc jquery-select2

我需要使用ajax实现select2,并且我使用this作为示例项目来工作。

这是我到目前为止所拥有的

查看

<div class="form-group">
    <div class="col-md-10">
        <select class="js-data-example-ajax form-control"></select>
    </div>
</div>

$(document).ready(function () {

    $('.js-data-example-ajax').select2({
        placeholder: 'Enter name',
        //Does the user have to enter any data before sending the ajax request
        minimumInputLength: 3,
        allowClear: true,
        ajax: {
            quietMillis: 150,
            // url: '@Url.Action("GetUsers", "CRMTItems")',
            url: '/CRMTItems/GetUsers/' + $('.js-data-example-ajax').text(),
            dataType: 'jsonp',
            results: function (data) {
                console.log('results');
                return { results: data.results }
            }
            // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
        }
    });
)};

控制器

public JsonResult GetUsers(string term)
{
    var users = CRMTItemViewModel.AllUsers.Where(u => u.DisplayName.Contains(term));
    var userList = AttendeesToSelect2Format(users, 10);
    return Json(userList, JsonRequestBehavior.AllowGet);
}

我可以看到搜索词被传入并且数据被过滤,但是当它被发送回视图时我只看到

enter image description here

我尝试完全复制示例项目,但后来遇到了进一步的问题:

  1. 使用@Html.TextBoxFor代替<select>时,我只看到

      

    没有select2 / compat / inputData

    在js控制台

  2. 完全复制js(使用dataresults函数)时,我的搜索词永远不会进入控制器,每次都会传递null

  3. 请有人帮忙解决这个问题我不明白

1 个答案:

答案 0 :(得分:0)

正如安德烈亚斯在文章中所说,这是因为

Results !== results

但我不是要更改js,而是需要将Results中的Select2PagedResult属性更改为 results

我不确定jsonp,但将其更改为json似乎没有任何区别,即使该类在代码中被称为JsonpResult