MVC5用AJAX实现一个下拉列表的值改变,另一个下拉列表的值跟着变(在不更新整个页面的前提下,且调用后台函数)

本文实现在不更新整个页面的前提下,一个下拉列表的值改变,调用后台的函数获取另一个下拉列表的值,然后只更新另一个下拉列表的页面显示。

代码如下:

1、后台controller获取另一个下拉列表更新后的值的函数:

public JsonResult AJAXGetLineFromFactory(string factory)
        {
            GetLineFromFactory(factory);
            return Json(ViewBag.allLineList, JsonRequestBehavior.AllowGet);
        }

其中,ViewBag.allLineList里面是另一个下拉列表更新数据后的List<string>集合。


2、页面的下拉列表代码:

<span>Factory:&nbsp;</span>
                 <select name="factory" class="selectChange">
                 @if (@ViewBag.factory == "All")
                 {
                     <option value="All" selected="selected">All</option>
                 }
                 else
                 {
                     <option value="All">All</option>
                 }
                @foreach (var factorytemp in @ViewBag.allFactory)
                {
                    if (@ViewBag.factory == @factorytemp)
                    {
                         <option value=@factorytemp selected="selected">@factorytemp</option>
                    }
                    else
                    {
                         <option value=@factorytemp>@factorytemp</option>
                    }
                }
                </select>

                <span>Line:&nbsp;</span>
                <select name="line" class="valueChange">
                @if (@ViewBag.line == "All")
                {
                    <option value="All" selected="selected">All</option>
                }
                else
                {
                    <option value="All">All</option>
                }
                @foreach (var linetemp in @ViewBag.allLineList)
                {
                    if (@ViewBag.line == @linetemp)
                    {
                        <option value=@linetemp selected="selected">@linetemp.Replace(@linetemp.Substring(0, @linetemp.Length - 1), "Line ")</option>
                    }
                    else
                    {
                        <option value=@linetemp>@linetemp.Replace(@linetemp.Substring(0, @linetemp.Length - 1), "Line ")</option>
                    }
                }
                </select>

这里,有两个下拉列表factory和line。代码中类似@ViewBag.的部分都是后台传过来的值,这点相信会mvc的人都知道。


3、下面编写factory列表的值变化后,line列表显示的值的范围跟着变化,且不刷新整个网页:

<script type="text/javascript">

$(document).ready(function () {
        $(".selectChange").change(function () {
            $.ajax({
                type: "POST",
                url: "Home/AJAXGetLineFromFactory",
                data: { factory: $(this).children("option:selected").val() },
                dataType: "json",
                success: function (data) {
                    $(".valueChange").empty();
                    if (data.length != 0) {
                        $("<option></option>")
                            .val("All")
                            .text("All")
                            .appendTo($(".valueChange"));
                        $.each(data, function (i, item) {
                            $("<option></option>")
                            .val(item)
                            .text(item.replace(item.substring(0, item.length -1), "Line "))

                            .appendTo($(".valueChange"));
                        });
                    }
                }
            });
        });
    });
    </script>  

其中,红色的部分是factory列表传给后台获取line列表更新值函数 AJAXGetLineFromFactory()的参数,注意参数名称一致

粉色背景部分说明一下,val(item)是下拉列表值的索引,text()里面是下拉列表显示的值。因为我的程序索引跟值要求一样,且只是string的集合,所以是这样写,这里可根据自己的实际需求改动。


OK!就这样完成任务



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值