为什么是我的jQuery.从操作方法中获取禁止的查询参数



我试图做一个$.get()来刷新一个列表,但无论我尝试什么,动作方法要么没有得到查询参数,要么得到一个空值。

这是我的页面:

@model ParkPay.Helm.ViewModels.PublicHolidayIndexModel
@section ViewScripts
    {
    <script>
        $(function () {
            $("#import-link").click(function () {
                var year = $("#Year").val();
                var importUrl = "@Url.Action("Import")";
                    $.get({
                        url: importUrl,
                        data: { year: $("#Year").val() }
                    });
                });
            });
    </script>
}
<section class="index-commands">
    @Html.LabelFor(m => m.Year)
    @Html.DropDownListFor(m => m.Year, Model.YearList)
    @Html.ActionLink("Import holidays for the selected year.", "Import", null, new { id = "import-link" })
</section>
<section id="index-table">
    @Html.Partial("KendoGridPartial", Model)
</section>

我已经尝试了$.get()的几个变化,并与当前的一个,上面,在Chrome浏览器中的断点显示URL为"/PublicHoliday/Import?year=2013",但在动作方法:

[HttpGet]
public ActionResult Import(string year)
{
    var service = new PublicHolidayService(ControllerDbContext);
    service.ImportPublicHolidays(int.Parse(year));
    return RedirectToAction("Index", new { year });
}

"year"为空。如果我尝试$.get(importUrl, {year: $("#Year").val() }),我会得到动作方法传递空值的错误。如果我尝试

$.get({
    url: importUrl,
    data: { year: $("#Year").val() }
});

得到相同的空值。如果我在动作方法签名中添加yearint,它甚至都不会出现,我得到

参数字典包含参数'year'的空条目

我到底要怎么把这个参数传递给$.get ?或者,$.get有缺陷,我必须恢复到$.ajax调用?

请使用- JSON.stringify(yourObject);

var obj = { year: $("#Year").val() };
$.ajax({
    url: importUrl,
    type: "GET",
    dataType: "json",
    data: JSON.stringify(obj)
});

我也遇到了同样的问题,我是这样解决的

最新更新