我正在使用uploadify在我的ASP.NET MVC应用程序中上传文件。在控制器动作中,我 return Json(true)
如果文件上传成功或 Json(false)
如果没有。
但在用户界面中,我没有看到任何指示,如果是 Json(false)
被返回。例如:tst1.html没有上传,但它仍然像其他文件一样显示为已上传。请看下面。
这是控制器的代码
[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);
}
我如何捕捉控制器动作返回的值,并在视图上显示适当的错误信息指示器?
你可以在控制器中填充动态ViewBag。
ViewBag.Result = "Success";
然后在查看。
@if(ViewBag.Result == 'Success') { ... ... }
EDIT: 使用MVC2,我认为你可以使用ViewData
ViewData["Result"] = "foo";
在查看时,你得到的值是
<%: ViewData["Result"] %>
EDIT2 : OK,最好的方法是实际拥有模型对象。
class YourViewModel {
public string Result {get; set; }
}
然后,在你的控制器上,你把填充的模型传递给视图。
return Json(new YourViewModel { Result= "whatever" });
然后,在视图中你可以调用Model.Result
试试这个
问候