Ошибка при отправке формы Asp.Net MVC - PullRequest
0 голосов
/ 04 марта 2012

ВЫПУСК

Я пытаюсь отправить форму asp.net mvc и получаю следующую ошибку.Когда страница изначально загружается, она успешно выполняет метод GridData.Если я нажимаю кнопку «Отправить» в представлении ниже, я получаю следующую ошибку:

ОШИБКА

Словарь параметров содержит пустую запись для параметра 'page' of nonОбнуляемый тип «System.Int32» для метода «System.Web.Mvc.JsonResult GridData (System.String, System.String, Int32, Int32)» в «HunterEdge.Web.Controllers.DataController».Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.Имя параметра: параметры

ЧАСТИЧНЫЙ ПРОСМОТР: Это данные представления, которые я пытаюсь передать

@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); 

1 Ответ

0 голосов
/ 04 марта 2012

Вы должны фильтровать данные сетки по-другому.Использование Html.BeginForm - неправильный путь.Посмотрите на ответ и используйте панель инструментов фильтра или расширенный поиск .Если вы решите использовать собственное поле <input>, вам следует использовать postData со свойством, определенным как функция (см. здесь ), и использовать .trigger("reloadGrid", [{page: 1}]) для отправки запроса на поиск в контроллер.В этом случае вы должны добавить новый параметр, который соответствует имени свойства в postData к списку параметров GridData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...