Я использую Action для получения данных отчета, как объекта JSON, без проблем. Отправьте ему форму с помощью jQuery ajax.Действие работает с POST, но не с GET (строка запроса)
Но теперь мне нужно возвращать разные типы результатов в зависимости от значения параметра. Он должен возвращать либо JSON, файл Excel (построенный с помощью HTML), либо файл PDF. Поэтому я создал вложенное перечисление для моего класса контроллера для ограничения доступных типов возвращаемых данных.
Но теперь, когда я пытаюсь вызвать действие от URL для создания файлов, он бросает ArgumentException
с сообщением:
The parameters dictionary contains a null entry for parameter 'dataInicio' of non-nullable type 'System.DateTime' for method 'System.Web.Mvc.ActionResult DadosRelatorioResumoLancamentos(System.Nullable`1[System.Int32], System.String, System.DateTime, System.DateTime, TipoResultado)' in 'Imovelweb.Web.Intranet.Controllers.RelatoriosController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters
Тем не менее, параметр dataInicio
присутствует в строке запроса :
Я попробовал оригинальный запрос (которым возвращает содержимое JSON) с обоими методами, и она работает с POST, но п ot с GET (забрасывается то же самое ArgumentException
).
Что мне не хватает?
Вот подпись метода действия в:
public ActionResult DadosRelatorioResumoLancamentos(
int? codFantasia,
string numAp,
DateTime dataInicio,
DateTime dataFim,
TipoResultado tipoResultado = TipoResultado.Json
);
А вот перечисление:
public enum TipoResultado
{
Json,
Excel,
Pdf
}
Как таблица Маршрут выглядит? Мне кажется, что MVC вызывает неправильный метод действий - тот, у кого нет параметра dataInicio? –
@TomasVoracek Вызывалось правильное действие. Проблема заключалась в формате даты, как сказано в ответе pjumble. – Raphael