JSONオブジェクトとしてレポートのデータを取得するためのアクションを問題なく使用しています。jQueryのajaxでフォームをPOSTしています。アクションは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
パラメータはクエリ文字列に存在します:私は元の要求両方の方法で(WICHがJSONコンテンツを返す)、それがPOSTで動作するが、Nを試みた
GET(同じArgumentException
がスローされます)のot。
私には何が欠けていますか?ここで
アクションメソッドのシグネチャです:
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