0

だからここに取引があります、私はExcelにアイテムの列挙可能なものをエクスポートできるようにしたいです:

これは、「ExportToExcel」モデルを構築し、それを別のコントローラーのアクションメソッドにリダイレクトするアプリの一部の領域のActionMethodであり、別のコントローラーは、すべての書式設定からExcelへの作業を実行します。

public ActionResult ExportCustomListToExcel()
{
    var exportModel = new ExportToExcelModel();

    //Here I fill up the model with a dataTable / other file info like
    //exportModel.Items = blah blah..

    return RedirectToAction("ExportToExcel", "Shared", new { model = exportModel, testString = "test",  area = "Shared" });
}

そして、これが私のSharedExportToExcelActionMethodです。

public ActionResult ExportToExcel(ExportToExcelModel model, string testString)
{
    //PROBLEM IS RIGHT HERE!
    // where testString == "test"
    // but model == null :(


    //Ommited unrelated code
}

ExportToExcel actionMethodがヒットしましたが、途中でExportToExcelModelが失われました:(

注:「testString」のような文字列の受け渡しに成功するので、モデルに何か問題がありますか?

念のため、ExportToExcelModelは次のとおりです。

public class ExportToExcelModel
{
    public ExportToExcelModel() {}

    public ExportToExcelModel(string fileName, ItemType itemType, IEnumerable<ExportableToExcelItem> items)
    {
        this.FileName = fileName;
        this.ItemType = ItemType;
        this.Items = items;
    }

    public string FileName { get; set; }
    public ItemType ItemType { get; set; }
    public IEnumerable<ExportableToExcelItem> Items { get; set; }

}

前もって感謝します!

私が今までに見つけた他のすべての質問がすでにここで答えられているので、初めて私は実際にここで質問をする必要がありました:)


編集:FormCollectionの結果の投稿:

http://imageshack.us/photo/my-images/861/sinttulonsa.png 申し訳ありませんが、初心者は写真を投稿できません:(

4

2 に答える 2

0

ExportToExcel署名をに切り替えてみてください

public ActionResult ExportToExcel(FormCollection data)
{
  var model = new ExportToExcelModel();
  try
  {
    UpdateModel(model, data)
  }
  catch(UpdateModelException ex)
  {
  }
}

FormCollectionの内容を確認し(役立つ場合があります)、UpdateModelが例外をスローしているかどうかも確認します。これは、アクションメソッドにFormCollectionではなくモデルを取り込むときに発生する原因であるためです。

それがあなたがそれを追跡するのに役立つことを願っています

更新: TempDataを使用して実行する必要がある場合があります。これを読んでください。おそらく、ASP.NETMVCではそのままでは実行できません。

于 2011-12-16T15:19:32.737 に答える
0

その理由は、RedirectToActionの結果がGETリクエストを起動し、パラメータをクエリ文字列に渡す必要があるためです。明らかに、URLが構成できる文字数には制限があります。

別のアクションの背後ではなく、クラスでExcelへの変換を行う必要があるように思われます。

だからCustomExportAction1CustomExportAction2両方が呼び出す

return File(ExcelExporter.ExportExcel(dataToExport));

または同様のもの。

于 2011-12-16T16:01:45.460 に答える