обработка значения Json в представлении - PullRequest
0 голосов
/ 02 марта 2012

Я использую uploadify для загрузки файлов в моем приложении ASP.NET MVC.В действии контроллера я возвращаю Json (true), если загрузка файла прошла успешно, или Json (false), если нет.

Однако в пользовательском интерфейсе я не вижу никаких признаков, если Json (false) был возвращен.Например.tst1.html не был загружен, но он по-прежнему отображается как загруженный, как и другие файлы.См. Ниже: enter image description here

Вот код контроллера:

[HttpPost]
        public ActionResult Upload(HttpPostedFileBase fileData)
        {
                if (fileData != null && fileData.ContentLength > 0)
                {
                    if (Path.GetExtension(fileData.FileName) == ".zip")
                    {
                        var zipFile = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
                        fileData.SaveAs(zipFile);

                        FileStream fs = System.IO.File.OpenRead(zipFile);
                        ZipFile zf = new ZipFile(fs);

                        foreach (ZipEntry zipEntry in zf)
                        {
                            if (zipEntry.Name.EndsWith(".htm") || zipEntry.Name.EndsWith(".html"))
                            {
                                return Json(true);
                            }
                        }
                        fs.Close();
                        fs.Dispose();
                        System.IO.File.Delete(zipFile);
                    }
                    else
                    {
                        var fileName = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
                        fileData.SaveAs(fileName);
                        return Json(true);
                    }
                }
                return Json(false);
    }

Как я могу получить значение, возвращаемое действием контроллера, и отобразить соответствующее сообщение об ошибке / индикатор в представлении?

1 Ответ

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

Вы можете заполнить динамический ViewBag в контроллере

ViewBag.Result = "Success";

Тогда в представлении,

@ if (ViewBag.Result == 'Success') {...}

РЕДАКТИРОВАТЬ: Используя MVC2, я думаю, вы можете использовать ViewData

ViewData["Result"] = "foo";

При просмотре вы получаете значение

<%: ViewData["Result"] %>

РЕДАКТИРОВАТЬ 2: ОК, лучший способ на самом деле иметь объект модели.

class YourViewModel {
     public string Result {get; set; }
}

Затем, на вашем контроллере, вы передаете заполненную модель представлению

return Json(new YourViewModel { Result= "whatever" });

Затем в представлении вы можете вызвать Model.Result

Попробуйте это,

привет

...