首页 > 解决方案 > 从 javascript 到控制器的数据传递错误

问题描述

我正在处理 ASP.NET MVC 项目,我想获取位置下拉选择的值,并根据我需要将值加载到城市下拉列表,我实现了以下代码和位置下拉 onselect 事件调用 javascript 函数和 javascript 函数调用控制器方法但是在执行控制器方法时 locationId 为空,并且我调试 javascript 并且 locationID 一直存在到这一行 data: JSON.stringify({ locationId: +locationId }),之后 javascript 返回错误。但是控制器方法被命中但 locationId 为空

下拉菜单的代码

  <div class="row">
    <div class="col-sm-4">
        @Localizer["Locations"]
        <select id="locationDropDown"  class="selectpicker form-control" asp-for="selectedLocation" onchange="getCityList()">
            <option value="0">&lt;None&gt;</option>
            @foreach (var item in Model.LocationList)
            {
                <option value="@item.Id">@item.Name</option>
            }
        </select>
    </div>
</div>
<div class="row">
    <div class="col-sm-4">
        @Localizer["KioskGroup"]
        <select id="cityDropDown" class="selectpicker form-control">
            <option>---Select City---</option>
        </select>
    </div>
</div>

Javascript代码

function getCityList()
        {
        debugger;
            var locationId = $("#locationDropDown").val();
            console.log(locationId)
        $.ajax({
            url: '/Kiosk/GetZoneListBYlocationID',
            type: 'POST',
            datatype: 'application/json',
            contentType: 'application/json',
            data: JSON.stringify({ locationId: +locationId }),
            success: function (result) {
                $("#cityDropDown").html("");
                $("#cityDropDown").append
                ($('<option></option>').val(null).html("---Select City---"));
                $.each($.parseJSON(result), function (i, zone) 
                { $("#cityDropDown").append($('<option></option>').val(zone.Id).html(zone.Name)) })

            },
            error: function(){alert("Whooaaa! Something went wrong..")},
        });

控制器方法

  public ActionResult GetZoneListBYlocationID(string locationID)
        {
            List<Zone> lstZone = new List<Zone>();
            long locationId = long.Parse(locationID);

            var zones = _zoneRepository.GetZonesByLocationId(locationId);

            return Json(JsonConvert.SerializeObject(zones));
        }

标签: javascriptasp.net-mvcasp.net-mvc-4

解决方案


为什么你是数据stringify 。下面一个应该没有stringify

data: { locationId: +locationId },

推荐阅读