【问题标题】:Postback JSON passing data to ViewBag MVC回传 JSON 将数据传递到 ViewBag MVC
【发布时间】:2015-05-21 07:31:06
【问题描述】:
 @Html.DropDownList("GroupCode",(IEnumerable<SelectListItem>)ViewBag.GroupCode,"-- Please Select --", new{@id="groupcd"})

DropDownList 选择组并将选择的值回传到 JSON 以获取客户端代码列表并放入另一个 DropDownList

$(function() {
    $("#groupcd").change(function () {
        var selectedValue = $("#groupcd").val();
        $.post('@Url.Action("getClientCD", "OutstandingClaim")', { selection: selectedValue }, function (data) {
            $("#clientcd").html(data);

        });
    });
});

Javascript 获取选定的值并发布到操作

        public JsonResult getClientCD(string selection)
    {
        var data = db.Common_CustMas.Where(c => c.Group == selection)
                .ToList().Select(x => string.Format("{0}--{1}", x.CUSTCODE, x.CUSTNAME));
        ViewBag.ClientCode = data;
        return Json(data, JsonRequestBehavior.AllowGet);
    }

回发到控制器后,查询列表并传回

@Html.DropDownList("ClientCD", (IEnumerable<SelectListItem>) ViewBag.ClientCode, "--Please Select --", new{@id="clientcd"})

查询有效,但没有数据传回 ViewBag 客户端代码。有谁知道这是什么问题以及如何解决这个问题?

【问题讨论】:

  • ViewBag 仅在渲染视图时出现,在这种情况下,您不会渲染视图,而是返回一些应该是 json 结果的列表项
  • o i c,那么如何将 json 结果传回下拉列表,您知道该怎么做吗?

标签: javascript jquery json model-view-controller


【解决方案1】:

你可以这样做

$('#CityID').change(function () {
            var cityid = $(this).val();
            $.ajax({
                url: '@Url.Action("PopulateDistrictsList ","Controller")',
                data: { CityID: cityid },
                datatype: "json",
                success: function (data) {
                   var ddldist = $('#DistrictID');
                    $.each(data, function (val, text) {
                        ddldist.append(
                            $('<option></option>').val(val).html(text)
                        );
                    });

                },
            })
        });

【讨论】:

    【解决方案2】:

    终于用代码解决了

    $(function() {
         $("#groupcd").change(function () {
             var selectedValue = $("#groupcd").val();
             $.getJSON('@Url.Action("getClientCD", "OutstandingClaim")', { selection: selectedValue }, function (result) {
                 var ddl = $('#clientcd');
                 ddl.empty();
                 $(result).each(function () {
                     ddl.append(
                         $('<option/>').html(this.Text)
                     );
                 });
             });
         });
    });
    

    控制器

    public JsonResult getClientCD(string selection)
        {
            var data = (from a in db.Common_CustMas
                                      where a.Group == selection
                                      select new {Text = ( a.CUSTCODE + "-" + a.CUSTNAME)}).Distinct().ToList();
            return Json(data, JsonRequestBehavior.AllowGet);
        }
    

    下拉列表

    @Html.DropDownList("GroupCode",(IEnumerable<SelectListItem>)ViewBag.GroupCode,"-- Please Select --", new{@id="groupcd"})
    
     @Html.DropDownList("ClientCD", new SelectList(Enumerable.Empty<SelectListItem>()),new{@id="clientcd"})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多