【问题标题】:How to send selected listbox values from one listbox to another in asp.net MVC如何在asp.net MVC中将选定的列表框值从一个列表框发送到另一个列表框
【发布时间】:2019-04-29 02:58:33
【问题描述】:

我想将选定的列表框项移动到另一个列表框而不重新加载整个页面。

在我的场景中,我使用整数值并希望将选定的值发送到另一个列表框,反之亦然。

谁能指导我如何做到这一点。

类代码

 public class NumberClass
  {
    public IEnumerable<SelectListItem> leftnumbers { get; set; }
    public IEnumerable<int> leftSelectednumbers { get; set; }

    public IEnumerable<SelectListItem> rightnumbers { get; set; }
    public IEnumerable<int> rightSelectednumbers { get; set; }
  }

控制器代码

  [HttpGet]
      public ActionResult Index()
      {
        List<SelectListItem> items = new List<SelectListItem>();

        for (int i = 1; i <= 20; i++)
        {
            SelectListItem selectList = new SelectListItem()
            {
                Text = i.ToString(),
                Value = i.ToString()

            };

            items.Add(selectList);

        }

        NumberClass num = new NumberClass()
        {
            leftnumbers = items,
            rightnumbers = null

        };
        return View(num);

    }


    [HttpPost]
    public string Index(IEnumerable<int> selectedvalue)
    {
        if (selectedvalue == null)
        {
            return "you have not selected";
        }
        else
        {
            //
            return;
        }

    }

索引.cshtml

@using (Html.BeginForm())
{
  <div class="col-md-6" style="font-family:Arial">
    @Html.ListBoxFor(m => m.leftSelectednumbers, Model.leftnumbers, new { size = 20, @class = "listBox" })
    <br />
    <input type="submit" value="move left" />
</div>

<div class="col-md-6" style="font-family:Arial">

    @Html.ListBoxFor(m => m.leftSelectednumbers, new List<SelectListItem>(), new { size = 20, @class = "listBox" })
    <br />
    <input type="submit" value="move right" />
</div>

}

【问题讨论】:

  • 使用 JavaScript 执行此操作会更加高效和用户友好。它可能也会更容易。你反对这样做的理由是什么?
  • @ADyson,我只是想知道它是否可以通过后端代码实现。感谢您的评论。
  • 通过 Ajax.BeginForml 使用局部视图。在部分情况下,您将保持控制,并在提交后仅重新渲染部分视图

标签: c# asp.net-mvc


【解决方案1】:

我尝试将jQuery 用于您的要求处理点击事件并将所选内容附加到右侧部分。

有了这个,你应该使用 javascript 而不是后端代码作为 ADyson 建议。

@model TestMVC.Controllers.NumberClass
@using (Html.BeginForm())
{
    <div class="col-md-6" style="font-family:Arial">
        @Html.ListBoxFor(m => m.leftSelectednumbers, Model.leftnumbers, new { size = 20, @class = "listBox" })
        <br />
        <input type="button" id="moveLeft" value="move left" />
    </div>

    <div class="col-md-6" style="font-family:Arial">

        @Html.ListBoxFor(m => m.rightSelectednumbers, new List<SelectListItem>(), new { size = 20, @class = "listBox" })
        <br />
        <input type="button" value="move right" />
    </div>

}

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
    $('#moveLeft').click(function () {
        var leftselected = $('#leftSelectednumbers').val();
        $.each(leftselected, function (key, value) {
            $('#rightSelectednumbers').append($("<option></option>").attr("value", value).text(value));
        });
    })

</script>

【讨论】:

  • 感谢您的回答。目前,它只是从左侧选择项目并将其附加到右侧。我可以问一个小疑问吗,我想从左侧完全删除选定的项目并将其附加到右侧。我该怎么做?请指导我。提前谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多