我正在尝试使用$.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中的断点显示的网址为"/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
的值为null。如果我尝试$.get(importUrl, {year: $("#Year").val() })
,我会收到操作方法传递空值的错误。如果我试试
$.get({
url: importUrl,
data: { year: $("#Year").val() }
});
我得到相同的空值。如果我在操作方法签名中将year
设为int
,则它甚至不会进入,我得到
参数字典包含参数'year'的空条目
我必须如何将此参数传递给$.get
?或者,$.get
存在缺陷,我必须恢复为$.ajax
来电吗?
答案 0 :(得分:0)
请使用--JSON.stringify(yourObject);
发送您的JSON对象var obj = { year: $("#Year").val() };
$.ajax({
url: importUrl,
type: "GET",
dataType: "json",
data: JSON.stringify(obj)
});
我遇到了同样的问题,我解决了这个问题。