javascript - MVC 4 中对 Controller 的 Ajax 调用为空

标签 javascript jquery ajax asp.net-mvc-4

当调用另一个选择的 onchange 时,我尝试填充一个选择。下面是我所构建的。我的 GetLine ActionResult 断点被击中,但参数breweryCode 为空。此时方法错误。我错过了什么?

Controller :

   public ActionResult Index()
    {
        List<Brewery> breweries = BuildMockBrewery();
        ViewBag.Breweries = new SelectList(breweries.AsEnumerable(), "BreweryCode", "BreweryDescription");
        return View();
    }

    public ActionResult GetLine(string breweryCode)
    {
        List<PackagingLine> packagingLines = BuildMockLine(breweryCode);
        SelectList pLine = new SelectList(breweryCode, "LineNumber", "Descriptions", 0);
        return Json(pLine);
    }

索引.cshtml:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<script type="text/javascript">
    function GetLine(_breweryCode) {
        var url = '/Report/GetLine/';

        $.ajax({
            url: url,
            data: { breweryCode: _breweryCode },
            cache: false,
            type: "POST",
            success: function (data) {
                alert('called');
                var markup = '<option value="0">Select Line</options>';
                for (var i = 0; i < data.length; i++) {
                    markup += '<option value="' + data[i].Value + '">' + data[i].Text + '</options';
                }
                $('#LineSelect').html(markup).show();
            },
            error: function (response) {
                alert('fail' + ' ' + _breweryCode);
            }
        });
    }
</script>
<div id="report-description">
    @using (Html.BeginForm("Index", "Report", FormMethod.Post))
    {    
        @Html.DropDownList("BreweryCode", (SelectList)ViewBag.Breweries, "Select Brewery", new { @class = "ui-select", @ID = "BrewerySelect", @onchange = "javascript:GetLine(this.Value);" })

        <select class="ui-select" id="LineSelect" name="ReportSelect">
                                 </select>
     }

最佳答案

在您的 @onchange 属性中,将 this.Value 更改为 this.value

尝试添加

[HttpPost]
public ActionResult GetLine(string breweryCode)
{
    List<PackagingLine> packagingLines = BuildMockLine(breweryCode);
    SelectList pLine = new SelectList(breweryCode, "LineNumber", "Descriptions", 0);
    return Json(pLine);
}

因此GetLine能够处理POST请求

关于javascript - MVC 4 中对 Controller 的 Ajax 调用为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285178/

相关文章:

javascript - jQuery $.data() 与 DOM 对象属性

Jquery 移动导航栏到侧栏

javascript - 在单个 ajax 响应中获取父对象和子对象

JavaScript 改变对象内部的变量

javascript - 使用 2 个按钮 + sweetalert2 提交表单

javascript - 如果外部文件不存在,文件将停止 : is possible to solve this?

mysql - 如何在codeigniter的 Controller 中传递下拉列表值id

javascript - 文本框失去焦点后如何调用函数

javascript - 模态滑动和打开

javascript - jquery。 livequery() 奇怪的行为