2

バックエンドでMVC3.netコントローラーを使用して、HttpPostを実行し、HttpContextを介してファイルを送信しています。

サーバーがファイルを読み取ると、アップロード結果とともに文字列のリストが返されます。

これまでのところ、2つのシナリオを機能させることができました。

1)文字列のリストを単一のタブ区切り文字列としてJsonResultとして返します

string tabSeparatedMessages = "";

foreach (string message in messageLog)
{
    tabSeparatedMessages = tabSeparatedMessages + message;

    if (message != messageLog[messageLog.Count - 1])
    {
        tabSeparatedMessages = tabSeparatedMessages + '\n';
    }
}
return this.Json(new
{
    success = true,
    total = messageLog.Count,
    data = tabSeparatedMessages
}, "text/html", JsonRequestBehavior.AllowGet);

2)テキストファイル内の文字列のリストをActionResultとして返します

string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".txt";

using (StreamWriter writer = new StreamWriter(fileName))
{
    foreach (string message in messageLog)
    {
        writer.WriteLine(message);
    }
}

return File(fileName, "text/plain", "UPLOAD_RESULTS.txt");

私の問題は、これらの各メソッドの要素が必要なのに、2つを組み合わせるのが難しいことです。JsonResultが必要なのは、ブール値の「success」値を返して、クライアントでモーダルな待機中のメッセージを解放できるようにするためです。文字列のリストをGUIコンポーネントに解析する代わりに、クライアントがファイルをダウンロードできるように、ActionResultが必要です。

JsonResultの一部としてダウンロードするテキストファイルを返す方法や、ActionResultを使用してJsonデータを返す方法はありますか?

読んでくれてありがとう

4

2 に答える 2

2

残念ながら、一度に返すことができる結果タイプは1つだけです。私があなたであり、upload_results.txtをクライアントにダウンロードする必要がある場合は、サーバー上のファイルへの参照であるパラメーターをjson結果に含めることになります。

したがって、クライアントは最初にアップロードが成功したという応答を受け取り、モーダルダイアログを非表示にしてから、javascriptを使用してupload_results.txtファイルに対して別のリクエストを行います。

于 2012-03-19T13:36:54.430 に答える
0

上記に同意し、JSONを送信して、ファイルを一時的にWebサーバーに保存します。このファイルへのパスをJSONに入れてから、GETを実行します

于 2012-03-19T14:43:09.640 に答える