我在一个页面上有单个按钮,它调用返回文件的方法,当有任何问题时我会在模型状态中添加错误,然后我清除它。
问题是,当我只返回文件时,如果以前在模型状态中添加了一些错误,现在下载文件后,模型状态不会刷新,我仍然可以看到错误。
[HttpPost]
public ActionResult Index(HttpPostedFileBase file, HomeViewModel model, string command)
{
if (!string.IsNullOrEmpty(reportPath) && !string.IsNullOrEmpty(reportName))
{
ModelState.Clear();
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, reportName);
}
ModelState.AddModelError("", "File wrong format");
return View(model);
}
答案 0 :(得分:0)
当您的Action返回文件时,它不会使用您的viewModel呈现的新视图进行响应。 ModelState也不会在您的视图中呈现。您可以使用开发工具栏(例如Firebug)验证这一点,并在按下按钮时查看请求/响应。如果您的操作返回文件,则不会传输HTML页面。
在您的情况下,只需在按下按钮时使用JavaScript删除客户端的警告。如果下载成功,您将不再看到错误。如果Action返回错误(和ModelState),它将再次呈现并显示错误