Вернуть файл в JsonResult или вернуть данные Json в ActionResult? - PullRequest
2 голосов
/ 19 марта 2012

Используя контроллер MVC3 .net на серверной стороне, я выполняю HttpPost для отправки файла через HttpContext.

Когда сервер читает файл, список строк возвращается с загрузкойрезультаты.

До сих пор мне удалось заставить работать два сценария:

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");

Моя проблема в том, что мне нужны элементы из каждого из этих методов, но у меня возникают трудности при их объединении.Я хочу, чтобы JsonResult мог возвращать логическое значение «success» для выпуска модального ожидающего сообщения на клиенте.Я хочу ActionResult, чтобы клиент мог просто загрузить файл вместо анализа списка строк в компонентах GUI.

Есть ли способ вернуть текстовый файл, который будет загружен как часть JsonResult, или returnДанные JSON с помощью ActionResult?

Спасибо, что прочитали

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

К сожалению, вы можете возвращать только один тип результата за раз.Если бы я был вами, и мне действительно нужно, чтобы файл upload_results.txt был загружен на клиент, у меня был бы параметр в моем результате json, который является ссылкой на файл на сервере.ответ, что загрузка прошла успешно, и вы скрываете модальное диалоговое окно, затем с помощью javascript вы делаете еще один запрос для файла upload_results.txt.

0 голосов
/ 19 марта 2012

Я согласен с вышесказанным, отправьте JSON и временно сохраните файл на веб-сервере.Укажите путь к этому файлу в JSON, а затем просто выполните GET

.
...