0

我正在尝试$.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",但在 action 方法中:

[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() }
});

我得到相同的空值。如果我在动作方法签名中创建year一个int,它甚至不会进入并且我得到

参数字典包含参数“年份”的空条目

我到底必须如何将此参数传递给$.get?或者,有$.get缺陷,我必须恢复$.ajax通话?

4

1 回答 1

0

请使用 - JSON.stringify(yourObject); 发送您的 JSON 对象

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

我遇到了同样的问题,我就这样解决了。

于 2013-06-14T05:22:00.727 回答