Я использовал Action для получения данных отчета в виде объекта JSON, без проблем помещая в него форму с помощью jjuery's ajax.
Но теперь мне нужно возвращать разные типы результатов в зависимости отзначение параметра.Он должен возвращать либо JSON, либо файл Excel (созданный с использованием HTML), либо файл PDF.Итак, я создал вложенный enum в своем классе контроллера для разграничения доступных типов возвращаемых данных.
Но теперь, когда я пытаюсь вызвать действие из 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.<br>
Parameter name: parameters
Тем не менее, параметр dataInicio
присутствует в строке запроса:
<a href="http://localhost:32331/Relatorios/DadosRelatorioResumoLancamentos?codFantasia=106&numAp=&dataInicio=21%2F03%2F2012&dataFim=21%2F03%2F2012&tipoResultado=1" rel="nofollow">http://localhost:32331/Relatorios/DadosRelatorioResumoLancamentos?codFantasia=106&numAp=&dataInicio=21%2F03%2F2012&dataFim=21%2F03%2F2012&tipoResultado=1</a>
Я пробовалисходный запрос (который возвращает содержимое JSON) с обоими методами, и он работает с POST, но не с GET (выдается тот же ArgumentException
).
Чего мне не хватает?
Вот подпись метода Action:
public ActionResult DadosRelatorioResumoLancamentos(
int? codFantasia,
string numAp,
DateTime dataInicio,
DateTime dataFim,
TipoResultado tipoResultado = TipoResultado.Json
);
А вот перечисление:
public enum TipoResultado
{
Json,
Excel,
Pdf
}