MVC返回文件和清除模型状态

本文关键字:模型 状态 清除 返回 文件 MVC | 更新日期: 2023-09-27 17:52:36

我在一个页面上有一个按钮,调用方法返回文件,当有任何问题时,我将错误添加到模型状态,当不是,然后我清除它。

问题是,当我只返回文件时,如果以前有一些错误添加到模型状态,现在下载文件后,模型状态不刷新,我仍然可以看到错误。

[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);
}

MVC返回文件和清除模型状态

当Action返回File时,它不会响应一个用viewModel呈现的新视图。ModelState也不会在视图中呈现。您可以使用开发工具栏(例如。Firebug),并在按下按钮时查看请求/响应。如果你的Actions返回文件,html页面将不会被传输。

在您的示例中,只需在按下按钮时使用JavaScript从客户端删除警告。如果下载成功,您将不再看到错误。如果您的Action返回一个Error(和ModelState),它将再次呈现并显示错误