问题
我正在尝试提交asp.net mvc表单,我收到以下错误。页面最初加载时会成功点击GridData方法。如果我单击下面视图中的“提交”按钮,则会出现以下错误。
错误
参数字典包含方法'System.Web.Mvc.JsonResult GridData(System.String,System.String,Int32,Int32)'的非可空类型'System.Int32'的参数'page'的空条目在'HunterEdge.Web.Controllers.DataController'中。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
PARTIAL VIEW:这是我试图提交的观看数据
@model HunterEdge.Web.Models.HarvestDataFilter
@using (Html.BeginForm("GridData", "Data"))
{
<div style=" width:300px; height:550px; float:left">
html removed for brevity
<input type="submit" value="Search" style=" margin-left:110px" />
</div>
}
控制器操作方法我试图获取表格数据
public JsonResult GridData(string sidx, string sord, int page, int rows, HarvestDataFilter filter)
{
var results = (from a in db.t_harvest_statistics_elk
where a.year == "2008" && a.unit_number == 1
orderby a.id
select new { a.id, a.year, a.unit_number, a.total_hunters, a.bulls, a.cows }).ToList();
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = results.Count();
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
var pageResults = results.Skip(pageIndex * pageSize).Take(pageSize);
var jsonData = new
{
total = totalPages,
page,
records = totalRecords,
rows = (
from pageResult in pageResults
select new
{
id = pageResult.id,
cell = new[] {
pageResult.year.ToString(),
"Add",
pageResult.unit_number.ToString(),
pageResult.total_hunters.ToString(),
pageResult.bulls.ToString(),
"add",
pageResult.cows.ToString(),
"add",
"add",
"add"
}
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
答案 0 :(得分:0)
您应该以其他方式过滤网格数据。使用Html.BeginForm
是错误的方法。查看the answer并使用filter toolbar或advanced searching。如果您决定使用自定义<input>
字段,则应使用postData
并将属性定义为函数(请参阅here)并使用.trigger("reloadGrid", [{page: 1}])
将搜索请求发送给控制器。在这种情况下,您应该将postData
中与属性名称对应的新参数添加到GridData
的参数列表中。