Select2不保留所选值

时间:2019-01-24 21:28:40

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

我在Select2上使用自定义列表在我的网站上设置了搜索选项,一切正常,问题是总是显示第一个选择的选项,而我想显示当前的选项。

使用此链接可以执行Select2可点击的选项:Attach click-event to element in .select2-result

在控制器中:

public ActionResult Real_Estate(string Tipo_Imovel_Search, string Localizacao_Search, string Tipologia_Search, string PrecoFrom, string PrecoTo, string AreaFrom, string AreaTo, string sortOrder, int? page)
{
    //Create List of RealEstateAllViewModel and fill it depend on searching strings
    var ApartmentsModel = new RealEstateAllViewModel();
    var ApartmentsList = ApartmentsModel.GetRegistos(Tipo_Imovel_Search, Localizacao_Search, Tipologia_Search, PrecoFrom, PrecoTo, AreaFrom, AreaTo);

    //sorting

    //Saved current sort variable for Paging List do not lose sorting in second page
    ViewBag.CurrentSort = sortOrder;

    switch (sortOrder)
    {
        case "preco_asc":
            ApartmentsList = ApartmentsList.OrderBy(s => s.Preco).ToList();
            break;
        case "preco_desc":
            ApartmentsList = ApartmentsList.OrderByDescending(s => s.Preco).ToList();
            break;
        case "area":
            ApartmentsList = ApartmentsList.OrderBy(s => s.Area_util).ToList();
            break;

在视图中:

<div class="container">
    <div class="row">
        <div class="col-12">
            @*select order list*@
            <select class="search">
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "preco_asc", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Preço (crescente)
                </option>
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "preco_desc", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Preço (decrescente)
                </option>
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "area", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Área (crescente)
                </option>
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "area_desc", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Área (decrescente)
                </option>
            </select>
        </div>
    </div>
</div>

Javascript:

$(".search").select2({
        language: "pt",
        minimumResultsForSearch: Infinity, //remove search box from single list
        templateResult: function (data) {
            if (data.id == null) {
                return data.text;
            }

            //used for allow click href in list
            var $listoption = $("<a>" + data.text + "</a > ");
            $listoption.prop("href", data.id);
            $listoption.on('mouseup', function (evt) {
                evt.stopPropagation();
            });

            return $listoption;
        }
    });

一切正常:URL的更改取决于搜索字符串:http://localhost:41350/pt/Apartamentos/Real_Estate?sortOrder=preco_asc

控制器返回右命令列表

问题在于,总是显示第一个选择的选项,而我想显示当前的选项。

我该怎么做?

请帮助,我是javascript的初学者。谢谢。

0 个答案:

没有答案