我试图做一个$.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() }
});
得到相同的空值。如果我在动作方法签名中添加year
和int
,它甚至都不会出现,我得到
参数字典包含参数'year'的空条目
我到底要怎么把这个参数传递给$.get
?或者,$.get
有缺陷,我必须恢复到$.ajax
调用?
请使用- JSON.stringify(yourObject);
var obj = { year: $("#Year").val() };
$.ajax({
url: importUrl,
type: "GET",
dataType: "json",
data: JSON.stringify(obj)
});
我也遇到了同样的问题,我是这样解决的